home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PD ROM 1
/
PD ROM Volume I - Macintosh Software from BMUG (1988).iso
/
Programming
/
Complete Applications
/
Telecom
/
MT Special 3
/
BASIC BBS
/
CONFIGURE BASIC
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
NeXTSTEP
RISC OS/Acorn
UTF-8
Wrap
Text File
|
1988-01-01
|
167.0 KB
|
4,302 lines
|
[
TEXT/ttxt
]
10000 ' $linesize: 132
10001 ' $title: 'CONFIG V2.10, Copyright 1983,84,85,86 by D. Thomas Mack'
10003 ' WARNING !!! DO NOT CHANGE, BYPASS OR REMOVE LINE 10000-10230
10010 ' CONFIG.BAS (RBBS-PC ver. CPC14.1D)
10030 ' by D.Thomas Mack
10040 ' The Second Ring
10050 ' 10210 Oxfordshire Road
10060 ' Great Falls, Virginia 22066
10070 '
10080 ' *******************************NOTICE***********************************
10090 ' * A limited license is granted to all users of this program and it's *
10100 ' * companion program, RBBS-PC (ver. CPC14.1), to make copies of this *
10110 ' * program and distribute the copies to other users, on the following *
10120 ' * conditions *
10130 ' * 1. The notices contained in lines 25 through 44 of the programs *
10140 ' * are not altered, bypassed, or removed. *
10150 ' * 2. The program is not to be disrtibuted to others in modified *
10160 ' * form (i.e. the line numbers must remain the same). *
10170 ' * 3. No fee is to be charged (or any other consideration received)*
10180 ' * for coping or distributing these programs without an express *
10190 ' * written agreement with D. Thomas Mack, The Second Ring, 10210*
10200 ' * Oxfordshire Road, Great falls, Virginia 22006 *
10210 ' * *
10220 ' * Copyright (c) 1983, 1984, 1985, 1986 Thomas Mack, The Second Ring *
10230 ' ************************************************************************
10240 DEFINT A-Z
CLEAR
DIM A$(10), _
SYSOP.FUNCTION(7), _
MAIN.FUNCTION(21), _
FILES.FUNCTION(10), _
UTILITY.FUNCTION(16), _
HELP$(9), _
DNLD$(99), _
MENU$(6)
'
' *****************************************************************************
' * DISPLAY THE CONFIG TITLE PAGE *
' *****************************************************************************
'
10250 WIDTH 80
CLS
I! = FRE(C$)
KEY OFF
LOCATE ,,0
10260 PRINT TAB(60)"tm"
PRINT TAB(16) STRING$(15,205)" U S E R W A R E "STRING$(15,205)
10270 PRINT
PRINT TAB(17)"Capital PC User Group User-Supported Software"
PRINT
PRINT TAB(5) CHR$(214)STRING$(67,196)CHR$(183)
10280 FOR I = 1 TO 12
READ A$
PRINT TAB(5) CHR$(186);A$;SPACE$(67-LEN(A$));CHR$(186)
NEXT
10290 PRINT TAB(5) CHR$(211)STRING$(67,196)CHR$(189)
PRINT "Copyright (c)1983,1984,1985,1986 Tom Mack, 10210 Oxfordshire Rd, Great Falls, VA"
10300 DATA " If you are using RBBS-PC CPC14.1 and find it valuable, I
10310 DATA " suggest you consider a contribution to
10320 DATA "
10330 DATA " Capital PC Software Exchange
10340 DATA " Post Office Box 6128
10350 DATA " Silver Spring, Maryland 20906
10360 DATA ""
10370 DATA " You are free to copy and share RBBS-PC CPC14.1 with
10380 DATA " others on these three conditions:
10390 DATA " 1. This program is not distributed in modified form.
10400 DATA " 2. No fee or consideration is charged.
10410 DATA " 3. This notice is not bypassed or removed.
'
' *****************************************************************************
' * DEFINE THE FUNCTIONS USED BY CONFIG *
' *****************************************************************************
'
10420 DEF FNTI! = CSNG(FIX((VAL(MID$(TIME$,1,2))*60*60) _
+ (VAL(MID$(TIME$,4,2))*60) _
+ (VAL(MID$(TIME$,7,2))*1)))
10422 DEF FNHSH(X$) = ((ASC(X$)*100 _
+ ASC(MID$(X$,LEN(X$)/2,1))*10 _
+ ASC(RIGHT$(X$,1))) MOD MAX.USR.FILE.SIZE.FRM.DEF) + 1
10424 DEF FNHSH2(X$) = (ASC(MID$(X$,2,1))*10 + 7) MOD MAX.USR.FILE.SIZE.FRM.DEF
10430 CONFIG.FILENAME$ = "RBBS-PC.DEF"
M$ = "Z"
MAXD = 10
10440 FG = 7
10450 BG = 0
10460 BORDER = 0
10470 DELAY! = FNTI! + 5
10480 IF FNTI! < DELAY! THEN _
LOCATE 22,15 : _
GOTO 10480
10490 LOCATE 22,15
PRINT SPC(64)
LOCATE 22,15
PRINT "Will you be running multiple copies of RBBS-PC (YES or NO)?";
10500 GOSUB 22380
ON AB GOTO 10530,10510,10490,10490
10510 GOSUB 22480
10520 '
'
' *****************************************************************************
' * CHECK TO SEE IF AN EXISTING "RBBS-PC.DEF" FILE EXISTS *
' *****************************************************************************
'
10530 ON ERROR GOTO 60010
DD$ = "C"
GOSUB 10540
MODEM.INIT.COMMAND$ = SG1$
FILE$ = CONFIG.FILENAME$
GOSUB 30000
IF OKAY THEN _
GOTO 10535
10531 GOSUB 31060
PRINT CONFIG.FILENAME$ + " file not found. A new one will be created.";
DELAY! = FNTI! + 5
GOSUB 60440
10532 GOSUB 31060
PRINT "Default drive on which RBBS is to reside (A-" + M$ + "): ";
LINE INPUT;HJ$
GOSUB 50654
IF LEN(HJ$)<>1 OR HJ$<"A" OR HJ$>M$ THEN _
GOTO 10532
10533 DD$ = HJ$
GOSUB 10540
GOTO 11870
10535 OPEN "I",#1,CONFIG.FILENAME$
GOTO 11590
'
' *****************************************************************************
' * INITALIZE ALL VARIABLES *
' *****************************************************************************
'
10540 D$ = DD$ + ":"
FALSE = 0
IB = 0
TRUE = NOT FALSE
MAXIMUM.DISPLAYABLE.PAGES = 9
MAXIUM.NUMBER.OF.NODES = 1
NETWORK.TYPE$ = "IBM's DOS"
RECYCLE.TO.DOS$ = "INTERNAL"
MAX.USR.FILE.SIZE.FRM.DEF = 16
MAIN.MESSAGE.FILE$ = D$ + "MESSAGES"
MAIN.MESSAGE.BACKUP$ = D$ + "MESSAGES.BAK"
CALLERS.FILE$ = D$ + "CALLERS"
COMMENTS.FILE$ = D$ + "COMMENTS"
MAIN.USER.FILE$ = D$ + "USERS"
C$ = ""
HELP.FILE.PREFIX$ = "HELP0"
HELP$(1) = "HELP01"
HELP$(2) = "HELP02"
HELP$(3) = "HELP03"
10720 HELP$(4) = "HELP04"
HELP$(5) = "HELP05"
HELP$(6) = "HELP06"
HELP$(7) = "HELP07"
HELP$(8) = "HELP08"
HELP$(9) = "HELP09"
BULLETIN.MENU$ = "BULLET"
BULLETIN.PREFIX$ = "BULLET"
WELCOME.FILE$ = D$ + "WELCOME"
NEWUSER.FILE$ = D$ + "NEWUSER"
MENU$(1) = D$ + "MENU1"
MENU$(2) = D$ + "MENU2"
MENU$(3) = D$ + "MENU3"
MENU$(4) = D$ + "MENU4"
MENU$(5) = D$ + "MENU5"
10880 CONFERENCE.MENU$ = D$ + "CONFENCE"
TRASHCAN.FILE$ = D$ + "TRASHCAN"
CONFERENCE.VIEWER.SEC.LVL = 0
WELCOME.INTERRUPTABLE = TRUE
REMIND.FILE.TRANSFERS = FALSE
REMIND.PROFILE = FALSE
PAGE.LENGTH = 23
MAX.MESSAGE.LINES = 19
DOORS.AVAILABLE = FALSE
DIRECTORY.EXTENTION$ = "DIR"
TB$ = DD$
DRIVE.FOR.BULLETINS$ = TB$
DRIVE.FOR.HELP.FILES$ = TB$
DOS.VERSION = 2
SYSOP.FIRST.NAME$ = "TOM"
SYSOP.LAST.NAME$ = "MACK"
SYSOP.PASSWORD.1$ = "RBBS-PC"
RBBS.NAME$ = "RBBS-PC"
SYSOP.PASSWORD.2$ = "CPC12"
EXPERT.USER = 0
CONFIG.VERSION$ = "(Version 2.20)" ' CPC14-1D
REQUIRED.RINGS = 1
MINIMUM.LOGON.SECURITY = 0
CONFERENCE.VIEWER.SEC.LVL = MINIMUM.LOGON.SECURITY
DEFAULT.SECURITY.LEVEL = 5
SYSOP.SECURITY.LEVEL = 10
11110 RECYCLE.TO.DOS = 0
LOCAL.PASSWORD$ = SYSOP.PASSWORD.1$
MAXIMUM.VIOLATIONS = 5
SF = 10
FOR I = 1 TO 7
SYSOP.FUNCTION(I) = SF
NEXT
MM = 5
FOR I = 1 TO 21
MAIN.FUNCTION(I) = MM
NEXT
FC = 5
FOR I = 1 TO 10
FILES.FUNCTION(I) = FC
NEXT
UE = 5
FOR I = 1 TO 16
UTILITY.FUNCTION(I) = UE
NEXT
PASSWORD.FILE$ = TB$ + ":" + "PASSWRDS"
MAXIMUM.PASSWORD.CHANGES = 3
MINIMUM.SECURITY.FOR.TEMP.PASSWORD = 5
OVERWRITE.SECURITY.LEVEL = SYSOP.SECURITY.LEVEL
DOORS.TERMINAL.TYPE = 5
DOWNLOAD.DRIVES$ = DD$ + DD$
MO$ = DD$
UPLOAD.DIRECTORY$ = "99"
RBBS.BAT$ = D$ + "RBBS.BAT"
SEC.LVL.EXEMPT.FRM.PURGING = SYSOP.SECURITY.LEVEL
11204 FILESEC.FILE$ = TB$ + ":" + "FILESEC"
SYSOP.MENU.SECURITY.LEVEL = 10
DOORS.SECURITY.LEVEL = 10
NETWORK.TYPE = 0
DEFAULT.MACHINE.TYPE$ = "IBMPC"
WAIT.BEFORE.DISCONNECT = 180
UPLOAD.TIME.FACTOR! = 0
MODEM.INIT.BAUD$ = "300"
MODEM.INIT.WAIT.TIME = 2 ' CPC14-1C
MODEM.COMMAND.DELAY.TIME = 1 ' CPC14-1C
TURBO.RBBS = TRUE ' CPC14-1C
11270 RCTTY.BAT$ = D$ + "RCTTY.BAT"
OMIT.MAIN.DIRECTORY$ = "NO"
OMIT.UPLOAD.DIRECTORY$ = "NO"
PROMPT.BELL = 0
PCJR = 0
MINUTES.PER.SESSION! = 72
MAX.ALLOWED.MSGS.FRM.DEF = 5
ACT.MNTHS.B4.DELETING = 1
START.OFFICE.HOURS = 800
END.OFFICE.HOURS = 2200
CODE.TYPE = FALSE
BULLETINS.OPTIONAL = TRUE
COM.PORT$ = "COM1"
MESSAGE.REMINDER = TRUE
REQUIRE.NON.ASCII = TRUE
PAGING.PRINTER.SUPPORT$ = ". "
LIMIT.DAILY.TIME = FALSE
COMMANDS.BETWEEN.RINGS = FALSE
MNP.SUPPORT = FALSE
ACTIVE.BULLETINS = 6
COMPUTER.TYPE = 0
11271 SYSOP.FUNCTION.KEY1$= " --- RBBS-PC'S Local Keyboard's Active Keys and Their Use --- "
11272 SYSOP.FUNCTION.KEY2$= "ESC- SYSOP sign-on locally to RBBS. END - Lock-out & logoff current user."
11273 SYSOP.FUNCTION.KEY3$= "F1 - End RBBS-PC and exit to DOS. PgUp- Display current user's information."
11274 SYSOP.FUNCTION.KEY4$= "F2 - Temporarily exit to DOS. PgDn- End display of user's information."
11275 SYSOP.FUNCTION.KEY5$= "F3 - Toggle Line Printer. "+CHR$(24)+" - Add 1 to a user's security"
11276 SYSOP.FUNCTION.KEY6$= "F4 - Toggle SYSOP Page Bell. "+CHR$(25)+" - Subtract 1 from user's security"
11277 SYSOP.FUNCTION.KEY7$= "F5 - Force on-line state."
11278 SYSOP.FUNCTION.KEY8$= "F6 - Toggle SYSOP available."
11279 SYSOP.FUNCTION.KEY9$= "F7 - SYSOP next on system."
11280 SYSOP.FUNCTION.KEY10$= "F8 - Grant temporary SYSOP privileges."
11281 SYSOP.FUNCTION.KEY11$= "F9 - Toggle SNOOP."
11282 SYSOP.FUNCTION.KEY12$= "F10- Force CHAT - ESC to end."
SG1$="ATM0Q1S2=255S10=30E0S0=0 "
11551 DNLD.SUB = 0
WILL.SUBDIRS.B.USED = FALSE
UPLOAD.TO.SUBDIR = FALSE
DOWNLOAD.TO.SUBDIR = FALSE
RESTRICT.BAUD = FALSE
USE.COLOR = FALSE
DISKFULL.GO.OFFLINE = TRUE
EXTENDED.LOGGING = FALSE
DUMB.MODEM = FALSE
COMMENTS.AS.MESSAGES = FALSE
UPLOAD.SUBDIR$ = ""
MODEM.RESET.COMMAND$ = "ATZ"
MODEM.COUNT.RINGS.COMMAND$ = "ATS1?"
MODEM.ANSWER.COMMAND$ = "ATQ0X1V1A"
MODEM.GO.OFFHOOK.COMMAND$ = "ATQ1E1H1M0"
DISK.FOR.DOS$ = DD$ + ":"
RETURN
11580 ' RBBS-PC Configuration Program for Compilable RBBS-PC
11590 LOCATE 22,15
PRINT SPC(64);
'
' *****************************************************************************
' * READ IN THE PARAMETERS FROM AN EXISTING "RBBS-PC.DEF" FILE *
' *****************************************************************************
'
11600 INPUT #1,DOWNLOAD.DRIVES$, _ ' FD$
SYSOP.PASSWORD.1$, _ ' PA$
SYSOP.PASSWORD.2$, _ ' PB$
SYSOP.FIRST.NAME$, _ ' NB$
SYSOP.LAST.NAME$, _ ' NC$
REQUIRED.RINGS, _ ' CE
START.OFFICE.HOURS, _ ' AC
END.OFFICE.HOURS, _ ' AD
MINUTES.PER.SESSION!, _ ' TC!
MAX.ALLOWED.MSGS.FRM.DEF, _ ' MP (DF)
ACT.MNTHS.B4.DELETING, _ ' LA (DF)
UPLOAD.DIRECTORY$, _ ' UF$
EXPERT.USER, _ ' XPR
ACTIVE.BULLETINS, _ ' BG
PROMPT.BELL, _ ' BE
PCJR, _ ' PCJR (DF)
CODE.TYPE, _ ' CL (DF)
MENU$(1), _ ' MG$
MENU$(2), _ ' MH$
MENU$(3), _ ' MI$
MENU$(4), _ ' MJ$
MENU$(5), _ ' MK$
CONFERENCE.MENU$, _ ' CD$
CONFERENCE.VIEWER.SEC.LVL, _ ' VA (DF)
WELCOME.INTERRUPTABLE, _ ' OA
REMIND.FILE.TRANSFERS, _ ' UD
PAGE.LENGTH, _ ' PL
MAX.MESSAGE.LINES, _ ' LW
DOORS.AVAILABLE, _ ' WB
MO$ ' MO$ (DF)
11610 GOSUB 22340
11620 INPUT #1,MAIN.MESSAGE.FILE$, _ ' ME$
MAIN.MESSAGE.BACKUP$, _ ' MF$
CALLERS.FILE$, _ ' CB$
COMMENTS.FILE$, _ ' CC$
MAIN.USER.FILE$, _ ' UC$
WELCOME.FILE$, _ ' WA$
NEWUSER.FILE$, _ ' NA$
DIRECTORY.EXTENTION$, _ ' DIR$
COM.PORT$, _ ' M13$
BULLETINS.OPTIONAL, _ ' OD
MODEM.INIT.COMMAND$, _ ' SG$
TB$, _ ' TB$ (DF)
DOS.VERSION, _ ' DA
FG, _ ' FGR
BG, _ ' BGR
BORDER, _ ' BDR
RBBS.BAT$, _ ' RB$
RCTTY.BAT$ ' CI$
IF LEN(MODEM.INIT.COMMAND$) <> 28 THEN _
MODEM.INIT.COMMAND$ = SG1$
11630 GOSUB 22340
11640 INPUT #1,OMIT.MAIN.DIRECTORY$, _ ' OB$
OMIT.UPLOAD.DIRECTORY$, _ ' OC$
HELP$(1), _ ' HA$(1)
HELP$(2), _
HELP$(3), _
HELP$(4), _
HELP$(5), _
HELP$(6), _
HELP$(7), _
HELP$(8), _
HELP$(9), _ ' HA$(9)
BULLETIN.MENU$, _ ' BA$
BULLETIN.PREFIX$, _ ' BB$
DRIVE.FOR.BULLETINS$, _ ' BD$ (DF)
MESSAGE.REMINDER, _ ' RC
REQUIRE.NON.ASCII, _ ' BF
DOORS.SECURITY.LEVEL, _ ' SD
MAXIUM.NUMBER.OF.NODES, _ ' MC
NETWORK.TYPE, _ ' SE
RECYCLE.TO.DOS, _ ' CF
MAX.USR.FILE.SIZE.FRM.DEF, _ ' UB (DF)
MAX.MSG.FILE.SIZE.FRM.DEF!, _ ' MQ! (DF)
TRASHCAN.FILE$ ' BC$
GOSUB 21895
11650 GOSUB 22340
11660 INPUT #1,MINIMUM.LOGON.SECURITY, _ ' ML
DEFAULT.SECURITY.LEVEL, _ ' DB
SYSOP.SECURITY.LEVEL, _ ' SB
FILESEC.FILE$, _ ' FB$
SYSOP.MENU.SECURITY.LEVEL, _ ' SC
LOCAL.PASSWORD$, _ ' KA$
MAXIMUM.VIOLATIONS, _ ' ND
SYSOP.FUNCTION(1), _ ' SA(1)
SYSOP.FUNCTION(2), _
SYSOP.FUNCTION(3), _
SYSOP.FUNCTION(4), _
SYSOP.FUNCTION(5), _
SYSOP.FUNCTION(6), _
SYSOP.FUNCTION(7), _ ' SA(7)
PASSWORD.FILE$, _ ' PD$
MAXIMUM.PASSWORD.CHANGES, _ ' CG
MINIMUM.SECURITY.FOR.TEMP.PASSWORD, _ ' CH
OVERWRITE.SECURITY.LEVEL, _ ' WC
DOORS.TERMINAL.TYPE, _ ' MN
LIMIT.DAILY.TIME ' M26
11670 GOSUB 22340
11680 INPUT #1,MAIN.FUNCTION(1), _ ' MD(1)
MAIN.FUNCTION(2), _
MAIN.FUNCTION(3), _
MAIN.FUNCTION(4), _
MAIN.FUNCTION(5), _
MAIN.FUNCTION(6), _
MAIN.FUNCTION(7), _
MAIN.FUNCTION(8), _
MAIN.FUNCTION(9), _
MAIN.FUNCTION(10), _
MAIN.FUNCTION(11), _
MAIN.FUNCTION(12), _
MAIN.FUNCTION(13), _
MAIN.FUNCTION(14), _
MAIN.FUNCTION(15), _
MAIN.FUNCTION(16), _
MAIN.FUNCTION(17), _
MAIN.FUNCTION(18), _
MAIN.FUNCTION(19), _
MAIN.FUNCTION(20), _
MAIN.FUNCTION(21), _ ' MD(21)
DEFAULT.MACHINE.TYPE$, _ ' SY$
WAIT.BEFORE.DISCONNECT ' TY
11690 GOSUB 22340
11700 INPUT #1,FILES.FUNCTION(1), _ ' FS(1)
FILES.FUNCTION(2), _
FILES.FUNCTION(3), _
FILES.FUNCTION(4), _
FILES.FUNCTION(5), _
FILES.FUNCTION(6), _
FILES.FUNCTION(7), _
FILES.FUNCTION(8), _
FILES.FUNCTION(9), _
FILES.FUNCTION(10), _ ' FS(10)
UTILITY.FUNCTION(1), _ ' UA(1)
UTILITY.FUNCTION(2), _
UTILITY.FUNCTION(3), _
UTILITY.FUNCTION(4), _
UTILITY.FUNCTION(5), _
UTILITY.FUNCTION(6), _
UTILITY.FUNCTION(7), _
UTILITY.FUNCTION(8), _
UTILITY.FUNCTION(9), _
UTILITY.FUNCTION(10), _
UTILITY.FUNCTION(11), _
UTILITY.FUNCTION(12), _
UTILITY.FUNCTION(13), _
UTILITY.FUNCTION(14), _
UTILITY.FUNCTION(15), _
UTILITY.FUNCTION(16), _ ' UA(16)
UPLOAD.TIME.FACTOR!, _ ' UPX!
COMPUTER.TYPE, _ ' CM
REMIND.PROFILE, _ ' CK
RBBS.NAME$, _ ' FF$
COMMANDS.BETWEEN.RINGS, _ ' M28
MNP.SUPPORT, _ ' M29
PAGING.PRINTER.SUPPORT$, _ ' MW$
MODEM.INIT.BAUD$ ' B$
11705 INPUT #1,SYSOP.FUNCTION.KEY1$, _ ' SM1$
SYSOP.FUNCTION.KEY2$, _
SYSOP.FUNCTION.KEY3$, _
SYSOP.FUNCTION.KEY4$, _
SYSOP.FUNCTION.KEY5$, _
SYSOP.FUNCTION.KEY6$, _
SYSOP.FUNCTION.KEY7$, _
SYSOP.FUNCTION.KEY8$, _
SYSOP.FUNCTION.KEY9$, _
SYSOP.FUNCTION.KEY10$, _ ' SM9$
SYSOP.FUNCTION.KEY11$, _ ' SH$
SYSOP.FUNCTION.KEY12$, _ ' SI$
SEC.LVL.EXEMPT.FRM.PURGING, _ ' PC ' CPC14-1C
MODEM.INIT.WAIT.TIME, _ ' CPC14-1C
MODEM.COMMAND.DELAY.TIME, _ ' CPC14-1C
TURBO.RBBS ' CPC14-1C
11706 INPUT #1,DNLD.SUB, _ ' DNLD.SUB
WILL.SUBDIRS.B.USED, _ ' M30 (DF)
UPLOAD.TO.SUBDIR, _ ' M31
DOWNLOAD.TO.SUBDIR, _ ' M32 (DF)
UPLOAD.SUBDIR$, _ ' M33$
RESTRICT.BAUD, _ ' M34
USE.COLOR, _ ' M35
DISKFULL.GO.OFFLINE, _ ' M36
EXTENDED.LOGGING, _ ' M37
MODEM.RESET.COMMAND$, _ ' M1$
MODEM.COUNT.RINGS.COMMAND$, _ ' M2$
MODEM.ANSWER.COMMAND$, _ ' M3$
MODEM.GO.OFFHOOK.COMMAND$, _ ' M4$
DISK.FOR.DOS$, _ ' M38$
DUMB.MODEM, _ ' M39
COMMENTS.AS.MESSAGES, _ ' M40
LSB, _ ' LSB
MSB, _ ' MSB
LINE.CONTROL.REGISTER, _ ' LCR
MODEM.CONTROL.REGISTER, _ ' MCR
LINE.STATUS.REGISTER, _ ' LSR
MODEM.STATUS.REGISTER ' MSR
11707 IF DNLD.SUB < 1 OR DNLD.SUB > 99 THEN _
GOTO 11710
FOR I = 1 TO DNLD.SUB
INPUT #1,DNLD$(I)
NEXT
11710 GOSUB 22340
'
' *****************************************************************************
' * CONVERT "RBBS-PC.DEF" PARAMETERS TO DISPLAYABLE VALUES, AS REQUIRED *
' *****************************************************************************
'
11720 BULLETIN.MENU$ = RIGHT$(BULLETIN.MENU$,(LEN(BULLETIN.MENU$)-2))
11730 BULLETIN.PREFIX$ = RIGHT$(BULLETIN.PREFIX$,(LEN(BULLETIN.PREFIX$)-2))
11740 IF RECYCLE.TO.DOS = 0 THEN _
RECYCLE.TO.DOS$ = "INTERNAL" ELSE _
RECYCLE.TO.DOS$ = "SYSTEM
11750 DRIVE.FOR.HELP.FILES$ = LEFT$(HELP$(1),1)
11760 HELP$(1) = RIGHT$(HELP$(1),(LEN(HELP$(1))-2))
11770 HELP.FILE.PREFIX$ = LEFT$(HELP$(1),LEN(HELP$(1))-1)
11780 SF = SYSOP.FUNCTION(1)
FOR I = 2 TO 7
IF SYSOP.FUNCTION(I) > SF THEN _
GOTO 11790
SF = SYSOP.FUNCTION(I)
11790 NEXT
11800 MM = MAIN.FUNCTION(1)
FOR I = 2 TO 21
IF MAIN.FUNCTION(I) > MM THEN _
GOTO 11810
MM = MAIN.FUNCTION(I)
11810 NEXT
11820 FC = FILES.FUNCTION(1)
FOR I = 2 TO 10
IF FILES.FUNCTION(I) > FC THEN _
GOTO 11830
FC = FILES.FUNCTION(I)
11830 NEXT
11840 UE = UTILITY.FUNCTION(1)
FOR I = 2 TO 16
IF UTILITY.FUNCTION(I) > UE THEN _
GOTO 11850
UE = UTILITY.FUNCTION(I)
11850 NEXT
11860 CLOSE #1
GOSUB 22340
11862 GOSUB 50480
GOSUB 22340
11864 GOSUB 50530
GOSUB 22340
11870 IF EXPERT.USER = 0 THEN _
EXPERT.USER$ = "NOVICE
11880 IF EXPERT.USER = -1 THEN _
EXPERT.USER$ = "EXPERT
11890 DRIVE.FOR.UPLOADS$ = RIGHT$(DOWNLOAD.DRIVES$,1)
11900 DRIVES.FOR.DOWNLOADS$ = LEFT$(DOWNLOAD.DRIVES$,(LEN(DOWNLOAD.DRIVES$)-1))
11910 PROMPT.BELL$ = "ON"
IF PROMPT.BELL = 0 THEN _
PROMPT.BELL$ = "OFF
11912 CODE.TYPE$ = "BASICA"
IF CODE.TYPE = TRUE THEN _
CODE.TYPE$ = "COMPILED
11914 BULLETINS.OPTIONAL$ = "NO"
IF BULLETINS.OPTIONAL = TRUE THEN _
BULLETINS.OPTIONAL$ = "YES
11916 M14$ = "ON"
IF VAL(MID$(MODEM.INIT.COMMAND$,4,1)) = 0 THEN _
M14$ = "OFF
11918 MESSAGE.REMINDER$ = "NO"
IF MESSAGE.REMINDER = TRUE THEN _
MESSAGE.REMINDER$ = "YES
11920 REQUIRE.NON.ASCII$ = "NO"
IF REQUIRE.NON.ASCII = TRUE THEN _
REQUIRE.NON.ASCII$ = "YES
11922 WELCOME.INTERRUPTABLE$ = "YES"
IF WELCOME.INTERRUPTABLE = FALSE THEN _
WELCOME.INTERRUPTABLE$ = "NO
11924 REMIND.FILE.TRANSFERS$ = "NO"
IF REMIND.FILE.TRANSFERS = TRUE THEN _
REMIND.FILE.TRANSFERS$ = "YES
11926 REMIND.PROFILE$ = "NO"
IF REMIND.PROFILE = TRUE THEN _
REMIND.PROFILE$ = "YES
11928 DOORS.AVAILABLE$ = "NO"
IF DOORS.AVAILABLE = TRUE THEN _
DOORS.AVAILABLE$ = "YES
11930 IF SYSOP.PASSWORD.1$ = "" THEN _
MN1$ = "(Disabled)" ELSE _
MN1$ = SYSOP.PASSWORD.1$
11931 IF SYSOP.PASSWORD.2$ = "" THEN _
MN2$ = "(Disabled)" ELSE _
MN2$ = SYSOP.PASSWORD.2$
11932 M11$ = "NO"
IF PAGING.PRINTER.SUPPORT$ = ". " + CHR$(7) THEN _
M11$ = "YES
11934 LIMIT.DAILY.TIME$ = "NO"
IF LIMIT.DAILY.TIME = TRUE THEN _
LIMIT.DAILY.TIME$ = "YES
11936 COMMANDS.BETWEEN.RINGS$ = "NO"
IF COMMANDS.BETWEEN.RINGS = TRUE THEN _
COMMANDS.BETWEEN.RINGS$ = "YES
11938 MNP.SUPPORT$ = "NO"
IF MNP.SUPPORT = TRUE THEN _
MNP.SUPPORT$ = "YES
11940 WILL.SUBDIRS.B.USED$ = "NO"
IF WILL.SUBDIRS.B.USED = TRUE THEN _
WILL.SUBDIRS.B.USED$ = "YES
11942 UPLOAD.TO.SUBDIR$ = "NO"
IF UPLOAD.TO.SUBDIR = TRUE THEN _
UPLOAD.TO.SUBDIR$ = "YES
11944 DOWNLOAD.TO.SUBDIR$ = "NO"
IF DOWNLOAD.TO.SUBDIR = TRUE THEN _
DOWNLOAD.TO.SUBDIR$ = "YES
11946 RESTRICT.BAUD$ = "NO"
IF RESTRICT.BAUD = TRUE THEN _
RESTRICT.BAUD$ = "YES
11947 IF RESTRICT.BAUD=-2 THEN _
RESTRICT.BAUD$="YES=Registered users"
11948 USE.COLOR$ = "NO"
IF USE.COLOR = TRUE THEN _
USE.COLOR$ = "YES
11950 DISKFULL.GO.OFFLINE$ = "NO"
IF DISKFULL.GO.OFFLINE = TRUE THEN _
DISKFULL.GO.OFFLINE$ = "YES
11952 EXTENDED.LOGGING$ = "NO"
IF EXTENDED.LOGGING = TRUE THEN _
EXTENDED.LOGGING$ = "YES
11953 DUMB.MODEM$ = "NO"
IF DUMB.MODEM = TRUE THEN _
DUMB.MODEM$ = "YES
11954 COMMENTS.AS.MESSAGES$="NO"
IF COMMENTS.AS.MESSAGES = TRUE THEN _
COMMENTS.AS.MESSAGES$="YES
11955 TURBO.RBBS$="NO" ' CPC14-1C
IF TURBO.RBBS = TRUE THEN _ ' CPC14-1C
TURBO.RBBS$ = "YES" ' CPC14-1C
'
' *****************************************************************************
' * IF A MESSAGE FILE EXISTS, READ IN THE PARAMETERS IN IT. *
' *****************************************************************************
'
12150 Y$ = "
12151 F = 0
12155 MAINMSG$ = MAIN.MESSAGE.FILE$
12156 MAINUSR$ = MAIN.USER.FILE$
12160 KEY OFF
GOSUB 22340
12161 CALLS.TODATE! = 0 ' set initial message number to 0
12162 FIRST.USER.RECORD = 1 ' USERS file -- first record number
12163 CURRENT.USER.COUNT = FIRST.USER.RECORD ' USERS file -- next available record number
12164 HIGHEST.USER.RECORD = MAX.USR.FILE.SIZE.FRM.DEF ' USERS file -- last record number
12165 FIRST.MESSAGE.RECORD = 2+ MAXIUM.NUMBER.OF.NODES ' MESSAGES file -- first record of messages
12166 NEXT.MESSAGE.RECORD = FIRST.MESSAGE.RECORD ' MESSAGES file -- next available record number
12167 HIGHEST.MESSAGE.RECORD = 5*MAX.ALLOWED.MSGS.FRM.DEF _
+ 1 + MAXIUM.NUMBER.OF.NODES ' MESSAGES file -- last record number
12168 MAXIMUM.NUMBER.OF.MSGS = MAX.ALLOWED.MSGS.FRM.DEF ' MESSAGES file -- maximum number of messages
12169 FILE$ = MAIN.MESSAGE.FILE$
MESSAGE.FILE.FOUND = 0
USER.FILE.FOUND = 0
12170 GOSUB 30000
'
' If MESSAGES exist, get checkpoint record
'
12171 IF OKAY THEN _
MESSAGE.FILE.FOUND = OKAY : _
GOSUB 30040 : _
MAX.USR.FILE.SIZE.FRM.DEF = HIGHEST.USER.RECORD : _
MAX.MSG.FILE.SIZE.FRM.DEF! = HIGHEST.MESSAGE.RECORD : _
MAX.ALLOWED.MSGS.FRM.DEF = INT((HIGHEST.MESSAGE.RECORD-FIRST.MESSAGE.RECORD)/5) + 1
12172 IF MAX.ALLOWED.MSGS.FRM.DEF > 999 THEN _
MAX.ALLOWED.MSGS.FRM.DEF = VAL("999")
12173 IF MAXIMUM.NUMBER.OF.MSGS < 1 THEN _
MAXIMUM.NUMBER.OF.MSGS = MAX.ALLOWED.MSGS.FRM.DEF : _
GOSUB 30450 ' Assure number of msgs.>0
12174 FILE$ = MAIN.USER.FILE$ ' Check for USERS file
12175 GOSUB 30000
'
' If USERS file exist, set values
'
12176 IF OKAY THEN _
USER.FILE.FOUND = OKAY : _
FILE$ = MAIN.USER.FILE$ : _
GOSUB 30180 : _
MAX.USR.FILE.SIZE.FRM.DEF = HIGHEST.USER.RECORD
12177 IF MESSAGE.FILE.FOUND <> -1 AND F <> 2 THEN _
CURRENT.USER.COUNT = UG + 1 ' if no MESSAGES file, assume USERS full
12178 IF MESSAGE.FILE.FOUND = -1 THEN _
GOSUB 30450 ' if MESSAGES file, re-write checkpoint
12179 IF MESSAGE.FILE.FOUND <> -1 THEN _
GOSUB 30230 ' write new MESSAGES file if none
12180 IF USER.FILE.FOUND <> -1 AND MESSAGE.FILE.FOUND = -1 THEN _
MAX.USR.FILE.SIZE.FRM.DEF = HIGHEST.USER.RECORD : _
GOSUB 50000 ' write new USERS file if none
12181 IF USER.FILE.FOUND <> -1 AND MESSAGE.FILE.FOUND <> -1 THEN _
GOSUB 50000 ' write new USERS file if none
12182 FOR I = 1 TO 10
KEY I,""
NEXT
12183 B1 = MAX.USR.FILE.SIZE.FRM.DEF
GOSUB 22140
'
' *****************************************************************************
' * DISPLY CONFIG'S MAIN FUNCTION KEY MENU *
' *****************************************************************************
'
12190 COLOR FG,BG,BORDER
CLS
I! = FRE(C$)
12200 COLOR 0,7,0
LOCATE 4,10
PRINT "RBBS-PC CPC14.1 CONFIGURATION PROGRAM " + CONFIG.VERSION$
COLOR FG,BG,BORDER
12210 LOCATE 1,1,0
PRINT "Copyright (c) 1983, 1984, 1985, 1986 Tom Mack"
12211 LOCATE 2,1,0
PRINT "10210 Oxfordshire Rd., Great Falls, VA 22066";
12215 IF F THEN _
GOSUB 24970
12220 LOCATE 6,2
PRINT " F1 Global RBBS-PC Parameters (part 1)
12230 LOCATE 8,2
PRINT " F2 Global RBBS-PC Parameters (part 2)
12240 LOCATE 10,2
PRINT " F3 Parameters for static RBBS-PC Files
12250 LOCATE 12,2
PRINT " F4 Parameters for dynamic RBBS-PC's Files
12260 LOCATE 14,2
PRINT " F5 Parameters for RBBS-PC's 'Doors'
12270 LOCATE 16,2
PRINT " F6 Parameters for RBBS-PC's Security
12280 LOCATE 18,2
PRINT " F7 Parameters for multiple RBBS-PC's
12290 LOCATE 20,2
PRINT " F8 RBBS-PC utilities
12295 LOCATE 22,2
PRINT " F9 Use of DOS subdirectories"
XX$ = "Press END to terminate or select function key to change parameters shown."
GOSUB 50345
12310 GOSUB 22160
12320 IF IX THEN _
ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,12350,12360,12350
12330 GOTO 12310
12350 GOSUB 60380
GOTO 12310
'
' *****************************************************************************
' * DISPLYA GLOBAL RBBS-PC PARAMETERS (PART 1) *
' *****************************************************************************
'
12360 DISPLAYED.PAGE.NUMBER = 1
12370 GOSUB 24800
12380 LOCATE 3,10
PRINT " 1. SYSOP's First Name --------------------------- " + SYSOP.FIRST.NAME$
12390 LOCATE 4,10
PRINT " 2. SYSOP's Last Name ---------------------------- " + SYSOP.LAST.NAME$
12400 LOCATE 5,10
PRINT " 3. Password #1 for SYSOP to sign on remotely ---- " + MN1$
12410 LOCATE 6,10
PRINT " 4. Password #2 for SYSOP to sign on remotely----- " + MN2$
12420 LOCATE 7,10
PRINT " 5. Password for SYSOP to sign on locally -------- " + LOCAL.PASSWORD$
12430 LOCATE 8,10
PRINT " 6. SYSOP's default sign-on mode ----------------- " + EXPERT.USER$
12440 LOCATE 9,10
PRINT " 7. SYSOP's office hours ------------------------ "STR$(START.OFFICE.HOURS);" to "STR$(END.OFFICE.HOURS)
12445 LOCATE 10,10
PRINT " 8. Page SYSOP using printer's bell -------------- " + M11$
12450 LOCATE 11,10
PRINT " 9. Number of rings to wait before answering -----"STR$(REQUIRED.RINGS)
IF MID$(MODEM.INIT.COMMAND$,24,5) = "255 " THEN _ ' CPC14-1D
LOCATE 11,63 : _ ' CPC14-1D
PRINT "RING BACK"; ' CPC14-1D
12460 LOCATE 12,10
PRINT "10. Deny access to callers who use 300 baud ------ " + RESTRICT.BAUD$
12470 LOCATE 13,10
PRINT "11. Are you using ANSI.SYS with a color monitor -- " + USE.COLOR$
12480 LOCATE 14,10
PRINT "12. Go off-line whenever a DISK FULL occurs ------ " + DISKFULL.GO.OFFLINE$
12490 LOCATE 15,10
PRINT "13. Prompt bell default is ----------------------- " + PROMPT.BELL$
12500 LOCATE 16,10
PRINT "14. Maximum time per session (in minutes) --------"STR$(MINUTES.PER.SESSION!)
12510 LOCATE 17,10
PRINT "15. Limit each user to" + STR$(MINUTES.PER.SESSION!) + " minutes/day? " + STRING$((14-LEN(STR$(MINUTES.PER.SESSION!))),45) + " " + LIMIT.DAILY.TIME$
12530 LOCATE 18,10
PRINT "16. # Months of inactivty before user deleted ----"STR$(ACT.MNTHS.B4.DELETING)
12560 LOCATE 19,10
PRINT "17. Communications port to be used by RBBS-PC ---- " + COM.PORT$
12570 LOCATE 20,10
PRINT "18. # of seconds to wait for modem to initialize -"STR$(MODEM.INIT.WAIT.TIME) ' CPC14-1C
LOCATE 21, 10
PRINT "19. Seconds to wait before issuing modem commands-"STR$(MODEM.COMMAND.DELAY.TIME) ' CPC14-1C
12575 LOCATE 22,10
PRINT "20. Name of RBBS-PC shown initially is ----------- " + RBBS.NAME$
12580 GOSUB 24890
12590 GOSUB 22160
12600 IF IX THEN _
ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,12190,14200,12620
12610 GOTO 12590
12620 GOSUB 50340
IF VAL(HJ$) < 1 OR VAL(HJ$) > 20 THEN _ ' CPC14-1C
GOTO 12580
ON VAL(HJ$) GOTO 12840,12910,12980,13060,12670,13140,13210,13224,13228,13238,13245,13249,13750,13840,16650,13940,14120,15240,15250,13131 ' CPC14-1C
'
' *****************************************************************************
' * PROCESS THE PASSWORD SELECTED FOR THE LOCAL SYSOP TO TAKE OVER RBBS-PC *
' *****************************************************************************
'
12670 GOSUB 31060
PRINT "Enter password (8 characters or less)";
GOSUB 14990
IF LEN(HJ$)>8 OR INSTR(HJ$,"0!") THEN _
HJ$ = "5" : _
GOTO 12670 ' CPC14-1C
LOCAL.PASSWORD$ = HJ$ ' CPC14-1C
GOTO 12360 ' CPC14-1C
'
' *****************************************************************************
' * PROCESS NAME OF UPLOAD DIRECTORY *
' *****************************************************************************
'
12730 GOSUB 13590
UPLOAD.DIRECTORY$ = HJ$
GOTO 14570
'
' *****************************************************************************
' * GET THE SYSOP'S FIRST NAME *
' *****************************************************************************
'
12840 LOCATE 24,5
PRINT "What is the SYSOP's FIRST name? ";
12850 LINE INPUT;HJ$
12860 IF HJ$ = "" THEN _
GOTO 12840
12870 IF LEN(HJ$) < 3 THEN _
GOTO 12840
12880 GOSUB 50654
12890 SYSOP.FIRST.NAME$ = HJ$
12900 GOTO 12360
'
' *****************************************************************************
' * PROCESS THE SYSOP'S LAST NAME *
' *****************************************************************************
'
12910 LOCATE 24,5
PRINT "What is the SYSOP's LAST name? ";
12920 LINE INPUT;HJ$
12930 IF HJ$ = "" THEN _
GOTO 12910
12940 IF LEN(HJ$) < 3 THEN _
GOTO 12910
12950 GOSUB 50654
12960 SYSOP.LAST.NAME$ = HJ$
12970 GOTO 12360
'
' *****************************************************************************
' * PROCESS THE "PSEUDONYM" (FIRST NAME) USED BY THE SYSOP TO LOGON REMOTELY *
' *****************************************************************************
'
12980 LOCATE 24,5
PRINT "What is the SYSOP's Password #1? ";
12990 LINE INPUT;HJ$
13020 GOSUB 50654
13030 SYSOP.PASSWORD.1$ = HJ$
13040 IF SYSOP.PASSWORD.1$ = "" THEN _
MN1$ = "(Disabled)" ELSE _
MN1$ = SYSOP.PASSWORD.1$
13050 GOTO 12360
'
' *****************************************************************************
' * PROCESS THE "PSEUDONYM" (LAST NAME) USED BY THE SYSOP TO LOGON REMOTELY *
' *****************************************************************************
'
13060 LOCATE 24,5
PRINT "What is the SYSOP's Password #2? ";
13070 LINE INPUT;HJ$
13100 GOSUB 50654
13110 SYSOP.PASSWORD.2$ = HJ$
13120 IF SYSOP.PASSWORD.2$ = "" THEN _
MN2$ = "(Disabled)" ELSE _
MN2$ = SYSOP.PASSWORD.2$
13130 GOTO 12360
'
' *****************************************************************************
' * ALLOW THE SYSOP TO GIVE THIS RBBS-PC A PERSONAL NAME *
' *****************************************************************************
'
13131 LOCATE 24,5
PRINT "Enter name for this RBBS-PC (19 characters or less) ";
13132 LINE INPUT;HJ$
13133 IF LEN(HJ$) > 19 THEN _
GOTO 13131
13134 GOSUB 50654
13135 RBBS.NAME$ = HJ$
13136 GOTO 12360
'
' *****************************************************************************
' * ALLOW THE SYSOP TO SELECT "EXPERT" OR "NOVICE" AS HIS DEFAULT MODE *
' *****************************************************************************
'
13140 LOCATE 24,5
PRINT "SYSOP's default sign-on mode (EXPERT/NOVICE)? ";
13150 LINE INPUT;HJ$
13160 IF LEN(HJ$) = 6 OR LEN(HJ$) = 1 THEN _
GOTO 13170
GOTO 13140
13170 GOSUB 50654
13180 IF HJ$ = "E" OR HJ$ = "EXPERT" THEN _
EXPERT.USER$ = "EXPERT" : _
GOTO 12360
13190 IF HJ$ = "N" OR HJ$ = "NOVICE" THEN _
EXPERT.USER$ = "NOVICE" :_
GOTO 12360
13200 GOTO 13140
'
' *****************************************************************************
' * ALLOW THE SYSOP TO SELECT HIS "OFFICE HOURS" *
' *****************************************************************************
'
13210 LOCATE 24,5
PRINT "What is the earliest SYSOP wants to be paged? -- HHMM ";
13211 LINE INPUT;HJ$
13212 IF LEN(HJ$) <> 4 THEN _
GOTO 13210
13213 IF FIX(VAL(MID$(HJ$,1,2))) < 0 OR _
FIX(VAL(MID$(HJ$,1,2))) > 24 OR _
FIX(VAL(MID$(HJ$,3,2))) < 0 OR _
FIX(VAL(MID$(HJ$,3,2))) > 59 THEN _
GOTO 13210
13214 START.OFFICE.HOURS = VAL(HJ$)
13215 IF START.OFFICE.HOURS < 0 OR START.OFFICE.HOURS > 2400 THEN _
GOTO 13210
13216 LOCATE 25,5
PRINT "What is the latest SYSOP wants to be paged? ---- HHMM ";
13217 LINE INPUT;HJ$
13218 IF LEN(HJ$) <> 4 THEN _
GOTO 13216
13219 IF FIX(VAL(MID$(HJ$,1,2))) < 0 OR _
FIX(VAL(MID$(HJ$,1,2))) > 24 OR _
FIX(VAL(MID$(HJ$,3,2))) < 0 OR _
FIX(VAL(MID$(HJ$,3,2))) > 59 THEN _
GOTO 13216
13220 END.OFFICE.HOURS = VAL(HJ$)
13221 IF END.OFFICE.HOURS < 0 OR END.OFFICE.HOURS > 2400 THEN _
GOTO 13216
13222 IF START.OFFICE.HOURS > END.OFFICE.HOURS THEN _
SWAP START.OFFICE.HOURS,END.OFFICE.HOURS
13223 GOTO 12360
'
' *****************************************************************************
' * DETERMINE IF THE PRINTER'S "BELL" IS TO BE USED WHEN PAGING *
' *****************************************************************************
'
13224 XX$ = "Use on-line printer's bell to the page SYSOP? (YES or NO) "
GOSUB 50345
GOSUB 22380
ON AB GOTO 13226,13226,13224,13224
13226 M11$ = HJ$
13227 GOTO 12360
'
' *****************************************************************************
' * DETERMINE THE NUMBER OF RINGS RBBS-PC IS TO WAIT BEFORE ANSWERING *
' *****************************************************************************
'
13228 A$ = ""
13229 XX$ = "How many rings should RBBS-PC wait before answering? " + A$
GOSUB 50345
13230 LINE INPUT;HJ$
13231 REQUIRED.RINGS = FIX(VAL(HJ$))
13232 IF REQUIRED.RINGS < 0 OR REQUIRED.RINGS > 255 THEN _
GOTO 13228
IF REQUIRED.RINGS = 0 THEN _
MID$(MODEM.INIT.COMMAND$,6,1) = "0" : _ ' CPC14-1D
MID$(MODEM.INIT.COMMAND$,24,5) = "1V1X1" : _ ' CPC14-1D
GOTO 12360
13233 XX$ = "Next call answered after" + STR$(REQUIRED.RINGS) + " rings. Do you want ringback? (YES/NO)"
GOSUB 50345
13234 GOSUB 22380
ON AB GOTO 13237,13235,13233,13233
13235 IF REQUIRED.RINGS > 5 THEN _
A$ = "(<6 for ringback)" : _
GOTO 13229
13236 MID$(MODEM.INIT.COMMAND$,24,5) = "255 "
GOTO 12360
13237 MID$(MODEM.INIT.COMMAND$,24,5) = "254 " ' CPC14-1D
GOTO 12360
'
' *****************************************************************************
' * ALLOW THE SYSOP TO ELECT TO HANDLE CALLS FROM 300 BAUD USERS *
' *****************************************************************************
'
13238 LOCATE 24,5
PRINT"Do you want to decline calls from users at 300 BAUD (YES OR NO) ";
13239 GOSUB 22380
ON AB GOTO 13243,13240,13238,13238
13240 GOSUB 50340
LOCATE 24,5
PRINT"Are registered users denied use of 300 BAUD (YES OR NO) ";
13241 GOSUB 22380
ON AB GOTO 13242,13243,13240,13240
13242 HJ$="YES=Registered users"
13243 RESTRICT.BAUD$=HJ$
13244 GOTO 12360
'
' *****************************************************************************
' * ALLOW THE SYSOP TO ELECT TO DISPLAY COLOR/GRAPHICS ON HIS LOCAL MONITOR *
' *****************************************************************************
'
13245 LOCATE 24,5
PRINT" Using ANSI.SYS for color/graphics on your color monitor (YES OR NO) ";
13246 GOSUB 22380
ON AB GOTO 13247,13247,13245,13245
13247 USE.COLOR$=HJ$
13248 GOTO 12360
'
' *****************************************************************************
' * ALLOW THE SYSOP TO ELECT TO GO OFF-LINE WHEN A DISK FULL CONDITIONS OCCURS*
' *****************************************************************************
'
13249 LOCATE 24,5
PRINT"Should RBBS-PC go off-line when DISK FULL occurs (YES OR NO) ";
13250 GOSUB 22380
ON AB GOTO 13251,13251,13249,13249
13251 DISKFULL.GO.OFFLINE$=HJ$
13252 GOTO 12360
'
' *****************************************************************************
' * REQUEST DRIVE SPECIFICATION IN THE RANGE "A" TO THE MAXIMUM ALLOWABLE *
' *****************************************************************************
'
13253 LOCATE 24,5
PRINT"Specify single drive in the range A->"+M$+" for "+A$;
13254 LINE INPUT;HJ$
13420 IF LEN(HJ$) <> 1 THEN _
GOTO 13253
13430 GOSUB 50654
13440 IF HJ$ < "A" OR HJ$ > M$ THEN _
GOTO 13253
13460 RETURN
'
' *****************************************************************************
' * ALLOW THE DRIVES AVAILABLE FOR DOWNLOADING TO BE SELECTED *
' *****************************************************************************
'
13470 LOCATE 24,5
PRINT "Specify download drives (max of" + STR$(MAXD) + " in the range A-> " + M$ + "). ";
13480 LINE INPUT;HJ$
13490 IF LEN(HJ$) < 1 OR LEN(HJ$) > MAXD THEN _
GOTO 13470
13500 GOSUB 50654
13510 FOR I = 1 TO LEN(HJ$)
13520 A$(I) = MID$(HJ$,I,1)
13530 NEXT
13540 FOR I = 1 TO LEN(HJ$)
13550 IF A$(I) < "A" OR A$(I) > M$ THEN _
GOTO 13470
13560 NEXT
13570 DRIVES.FOR.DOWNLOADS$ = HJ$
13571 IF DNLD.SUB < 1 THEN _
GOTO 14570
13572 FOR I = 1 TO DNLD.SUB
13573 IF INSTR(1,DRIVES.FOR.DOWNLOADS$,LEFT$(DNLD$(I),1)) = 0 THEN _
DNLD$(I) = ""
13577 NEXT
13578 STOPIT = DNLD.SUB
13579 FOR I = 1 TO STOPIT
13580 IF DNLD$(I) <> "" THEN _
GOTO 13583
13581 DNLD$(I) = DNLD$(I + 1)
13582 DNLD$(I + 1) = ""
13583 NEXT
13584 DNLD.SUB = 0
13585 FOR I = 1 TO STOPIT
13586 IF DNLD$(I) <> "" THEN _
DNLD.SUB = DNLD.SUB + 1
13587 NEXT
13588 GOTO 14570
'
' *****************************************************************************
' * DETERMINE THE NAME OF THE UPLOAD DIRECTORY (A TEXT FILE) *
' *****************************************************************************
'
13590 A$ = "Name of upload directory (max of 8 characters)."
MAX = 8
GOTO 13599
13591 A$ = "Master directory name--used as ext. for others. (3 char. max)."
MAX = 3
13599 LOCATE 24,5
PRINT A$;
13600 LINE INPUT;HJ$
GOSUB 50654
13610 IF LEN(HJ$) < 1 OR LEN(HJ$) > MAX THEN _
GOTO 13599
13615 I = 0
GOSUB 25920
IF I = 0 THEN _
RETURN
GOTO 13599
'
' *****************************************************************************
' * IS THE DEFAULT TO HAVE THE PROMPT BELL ON AFTER EACH COMMAND? *
' *****************************************************************************
'
13750 LOCATE 24,5
PRINT "Prompt bell default? (ON or OFF) ";
13760 LINE INPUT;HJ$
13770 IF LEN(HJ$) < 1 OR LEN(HJ$) > 3 THEN _
GOTO 13750
13780 GOSUB 50654
13790 IF HJ$ = "ON" THEN _
GOTO 13820
13800 IF HJ$ = "OFF" THEN _
GOTO 13820
13810 GOTO 13750
13820 PROMPT.BELL$ = HJ$
13830 GOTO 12360
'
' *****************************************************************************
' * SPECIFY THE MAXIMUM TIME A USER CAN STAY ON (THE DEFAULT) *
' *****************************************************************************
'
13840 LOCATE 24,5
PRINT "Set maximum minutes a user can stay on the system ";
13850 LINE INPUT;HJ$
13860 MINUTES.PER.SESSION! = VAL(HJ$)
13870 IF MINUTES.PER.SESSION! < 0 OR MINUTES.PER.SESSION! > 1440 THEN _
GOTO 13840
13880 GOTO 12360
'
' ******************************************************************************
' * ALLOW THE MAXIMUM NUMBER OF MESSAGES ALLOWED TO BE SELECTED *
' ******************************************************************************
'
13890 J = 999
IF ((MAX.MSG.FILE.SIZE.FRM.DEF!-1-MAXIUM.NUMBER.OF.NODES)/5)<J THEN _
J = (MAX.MSG.FILE.SIZE.FRM.DEF!-1-MAXIUM.NUMBER.OF.NODES)/5
13895 GOSUB 50340
LOCATE 24,5
PRINT "Set maximum number of messages allowed (MAX = " + STR$(FIX(J)) + ")";
13900 LINE INPUT;HJ$
13910 MAX.ALLOWED.MSGS.FRM.DEF = VAL(HJ$)
13920 IF MAX.ALLOWED.MSGS.FRM.DEF < 1 AND _
MAX.ALLOWED.MSGS.FRM.DEF > 999 THEN _
GOTO 13890
13922 IF MAX.ALLOWED.MSGS.FRM.DEF > 0 AND _
MAX.ALLOWED.MSGS.FRM.DEF < 1000 AND _
MAX.ALLOWED.MSGS.FRM.DEF < J + 1 THEN _
GOTO 13929
13924 XX$ = "Increase the " + MAIN.MESSAGE.FILE$ + " file to " + STR$((MAX.ALLOWED.MSGS.FRM.DEF*5) + 1 + MAXIUM.NUMBER.OF.NODES) + " records? (YES OR NO) "
GOSUB 50345
13926 GOSUB 22380
ON AB GOTO 13890,13927,13890,13890
13927 MAXIMUM.NUMBER.OF.MSGS = MAX.ALLOWED.MSGS.FRM.DEF
GOSUB 30450
B3! = (MAX.ALLOWED.MSGS.FRM.DEF*5) + 1 + MAXIUM.NUMBER.OF.NODES
GOSUB 22080
GOTO 21550
13929 MAXIMUM.NUMBER.OF.MSGS = MAX.ALLOWED.MSGS.FRM.DEF
GOSUB 30450
13930 GOTO 21550
'
' *****************************************************************************
' * IDENTIFY THE NUMBER OF MONTHS A USER CAN BE INACTIVE BEFORE HE IS PURGED *
' *****************************************************************************
'
13940 LOCATE 24,5
PRINT "Set number of months before an inactive user is purged. ";
13950 LINE INPUT;HJ$
13960 ACT.MNTHS.B4.DELETING = VAL(HJ$)
13970 IF ACT.MNTHS.B4.DELETING < 1 OR ACT.MNTHS.B4.DELETING > 12 THEN _
GOTO 13940
13980 GOTO 12360
'
' *****************************************************************************
' * SPECIFY THE COMMUNICATIONS PORT TO BE USED (1 OR 2) *
' *****************************************************************************
'
14120 COM1 = 1
14130 COM2 = 2
14140 LOCATE 24,5
PRINT "Number of communication port to be used (" + STR$(COM1) + " or" + STR$(COM2) + " )? ";
14150 LINE INPUT;HJ$
14160 IF LEN(HJ$) <> 1 THEN _
GOTO 14120
14170 IF FIX(VAL(MID$(HJ$,1,1))) < COM1 OR _
FIX(VAL(MID$(HJ$,1,1))) > COM2 THEN _
GOTO 14120
14180 COM.PORT$ = "COM" + HJ$
14190 GOTO 12360
'
' *****************************************************************************
' * DISPLAY GLOBAL RBBS-PC PARAMETERS (PART 1) *
' *****************************************************************************
'
14200 DISPLAYED.PAGE.NUMBER = 2
14210 GOSUB 24800
14220 LOCATE 3,10
PRINT "21. Foreground color (for color monitors) is -----"STR$(FG)
14230 LOCATE 4,10
PRINT "22. Background color (for color monitors) is -----"STR$(BG)
14240 LOCATE 5,10
PRINT "23. The border color (for color monitors) is -----"STR$(BORDER)
14250 LOCATE 6,10
PRINT "24. The modem speaker default is ----------------- " + M14$
14260 LOCATE 7,10
PRINT "25. Remind users of messages that they left ------ " + MESSAGE.REMINDER$
14270 LOCATE 8,10
PRINT "26. Remind users of # uploads and downloads? ----- " + REMIND.FILE.TRANSFERS$
14275 LOCATE 9,10
PRINT "27. Remind users of their terminal profile? ------ " + REMIND.PROFILE$
14280 LOCATE 10,10
PRINT "28. Default user page length is ------------------"STR$(PAGE.LENGTH)
14290 LOCATE 11,10
PRINT "29. Maximum number of lines allowed per message --"STR$(MAX.MESSAGE.LINES)
14300 LOCATE 12,10
PRINT "30. Require non-ascii protocol for binary files -- " + REQUIRE.NON.ASCII$
14305 LOCATE 13,10
PRINT "31. Is MICROCOM's MNP protocol available? -------- " + MNP.SUPPORT$
14310 LOCATE 14,10
PRINT "32. Omit ";DIRECTORY.EXTENTION$;" from N)ew command ";STRING$(22-LEN(DIRECTORY.EXTENTION$),"-");" ";OMIT.MAIN.DIRECTORY$
14320 LOCATE 15,10
PRINT "33. Omit "; + UPLOAD.DIRECTORY$;" from N)ew command ";STRING$(22-LEN(UPLOAD.DIRECTORY$),"-");" ";OMIT.UPLOAD.DIRECTORY$
14330 LOCATE 16,10
PRINT "34. Is system 'welcome' interruptable? ----------- " + WELCOME.INTERRUPTABLE$
14340 LOCATE 17,10
PRINT "35. Are system bulletins to be 'optional'? ------- " + BULLETINS.OPTIONAL$
14360 GOSUB 16062
LOCATE 18,10
PRINT "36. Type of PC RBBS-PC will be running on? ------- " + COMPUTER.TYPE$
14365 LOCATE 19,10
PRINT "37. Issue modem commands between rings ----------- " + COMMANDS.BETWEEN.RINGS$
14366 LOCATE 20,10
PRINT "38. Baud rate to initially open modem at --------- " + MODEM.INIT.BAUD$
14367 LOCATE 21,10
PRINT "39. Seconds waited before logging off idle users -" + STR$(WAIT.BEFORE.DISCONNECT)
14368 LOCATE 22,10
PRINT "40. Are you using a 'DUMB' auto-answer modem? -----" + DUMB.MODEM$
14370 GOSUB 24890
14380 GOSUB 22160
14390 IF IX THEN _
ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,12360,14570,14410
14400 GOTO 14380
14410 GOSUB 50340
IF VAL(HJ$) < 21 OR VAL(HJ$) > 40 THEN _
GOTO 14370
ON VAL(HJ$)-20 GOTO 14420,14430,14440,15710,15800,16690,16722,16730,16790,15880,15911,15920,15960,16000,15840,16040,16121,16124,16031,16725
14420 GOSUB 15520
GOTO 15530
14430 GOSUB 15520
GOTO 15590
14440 GOSUB 15520
GOTO 15650
'
' *****************************************************************************
' * DISPLAY PARAMETERS FOR STATIC RBBS-PC FILES *
' *****************************************************************************
'
14570 DISPLAYED.PAGE.NUMBER = 3
14580 GOSUB 24800
14590 LOCATE 3,10
PRINT "41. Drive containing RBBS-PC bulletins is -------- " + DRIVE.FOR.BULLETINS$
14600 LOCATE 4,10
PRINT "42. Name of file describing 'bulletins' is ------- " + BULLETIN.MENU$
14610 LOCATE 5,10
PRINT "43. Number of active 'bulletins' -----------------" + STR$(ACTIVE.BULLETINS)
14620 LOCATE 6,10
PRINT "44. Prefix used to name bulletin files is -------- " + BULLETIN.PREFIX$
14630 LOCATE 7,10
PRINT "45. Drive containing 'help' files is ------------- " + DRIVE.FOR.HELP.FILES$
14640 LOCATE 8,10
PRINT "46. Prefix used to name the nine 'help' files ---- " + HELP.FILE.PREFIX$
14650 LOCATE 9,10
PRINT "47. Name of 'newuser' file shown to new users ---- " + NEWUSER.FILE$
14660 LOCATE 10,10
PRINT "48. Name of 'welcome' file shown at logon -------- " + WELCOME.FILE$
14670 LOCATE 11,10
PRINT "49. File directory ext. (name of master directory) " + DIRECTORY.EXTENTION$
14680 LOCATE 12,10
PRINT "50. The SYSOP's command menu is named ------------ " + MENU$(1)
14690 LOCATE 13,10
PRINT "51. The main messages subsystem menu is named ---- " + MENU$(2)
14700 LOCATE 14,10
PRINT "52. The file subsystem menu is named ------------- " + MENU$(3)
14710 LOCATE 15,10
PRINT "53. The utilities subsystem menu is named -------- " + MENU$(4)
14730 LOCATE 16,10
PRINT "54. Menu that lists available conferences is ----- " + CONFERENCE.MENU$
14740 LOCATE 17,10
PRINT "55. File containing invalid user names ----------- " + TRASHCAN.FILE$
14742 LOCATE 18,10
PRINT "56. Factor to extend session time for uploads ----" + STR$(UPLOAD.TIME.FACTOR!)
14744 LOCATE 19,10
PRINT "57. Default system type for new callers ---------- " + DEFAULT.MACHINE.TYPE$
14745 LOCATE 20,10
PRINT "58. Drive available for Uploading ---------------- " + DRIVE.FOR.UPLOADS$
14746 LOCATE 21,10
PRINT "59. Name of directory for uploading -------------- " + UPLOAD.DIRECTORY$
14747 LOCATE 22,10
PRINT "60. Drive(s) available for Downloading ----------- " + DRIVES.FOR.DOWNLOADS$
14750 GOSUB 24890
14760 GOSUB 22160
14770 IF IX THEN _
ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,14200,15340,14790
14780 GOTO 14760
14790 GOSUB 50340
14800 IF HJ$ = "41" THEN _
GOSUB 15160 : _
DRIVE.FOR.BULLETINS$ = TB$ : _
GOTO 14570
14810 IF HJ$ = "42" THEN _
GOSUB 14970 : _
BULLETIN.MENU$ = HJ$ : _
GOTO 14570
14820 IF HJ$ = "43" THEN _
GOTO 15290
14830 IF HJ$ = "44" THEN _
GOSUB 14970 : _
IF LEN(HJ$) > 6 THEN _
HJ$ = "44" : _
GOTO 14810 ELSE _
BULLETIN.PREFIX$ = HJ$ : _
GOTO 14570
14840 IF HJ$ = "45" THEN _
GOSUB 15160 : _
DRIVE.FOR.HELP.FILES$ = HJ$ : _
GOTO 14570
14850 IF HJ$ = "46" THEN _
GOSUB 14970 : _
IF LEN(HJ$) > 7 THEN _
HJ$ = "44" : _
GOTO 14810 ELSE _
HELP.FILE.PREFIX$ = HJ$ : _
GOTO 14570
14860 IF HJ$ = "47" THEN _
GOSUB 17330 : _
NEWUSER.FILE$ = SJ$ + ":" + HJ$ : _
GOTO 14570
14870 IF HJ$ = "48" THEN _
GOSUB 17330 : _
WELCOME.FILE$ = SJ$ + ":" + HJ$ : _
GOTO 14570
14880 IF HJ$ = "49" THEN _
GOSUB 13591 : _
DIRECTORY.EXTENTION$ = HJ$ : _
GOTO 14570
14890 IF HJ$ = "50" THEN _
GOSUB 17330 : _
MENU$(1) = SJ$ + ":" + HJ$ : _
GOTO 14570
14900 IF HJ$ = "51" THEN _
GOSUB 17330 : _
MENU$(2) = SJ$ + ":" + HJ$ : _
GOTO 14570
14910 IF HJ$ = "52" THEN _
GOSUB 17330 : _
MENU$(3) = SJ$ + ":" + HJ$ : _
GOTO 14570
14920 IF HJ$ = "53" THEN _
GOSUB 17330 :MENU$(4) = SJ$ + ":" + HJ$ : _
GOTO 14570
14940 IF HJ$ = "54" THEN _
GOSUB 17330 : _
CONFERENCE.MENU$ = SJ$ + ":" + HJ$ : _
GOTO 14570
14950 IF HJ$ = "55" THEN _
GOSUB 17330 : _
TRASHCAN.FILE$ = SJ$ + ":" + HJ$ : _
GOTO 14570
14952 IF HJ$ = "56" THEN _
GOSUB 15234 : _
GOTO 14570
14954 IF HJ$ = "57" THEN _
GOSUB 15236 : _
GOTO 14570
14955 IF HJ$ = "58" THEN _
A$ = "uploading" :_
GOSUB 13253 : _
DRIVE.FOR.UPLOADS$ = HJ$ : _
IF LEN(UPLOAD.SUBDIR$)>1 THEN _
MID$(UPLOAD.SUBDIR$,1,1) = DRIVE.FOR.UPLOADS$ : _
GOTO 14570 ELSE _
GOTO 14570
14956 IF HJ$ = "59" THEN _
GOTO 12730
14957 IF HJ$ = "60" THEN _
GOTO 13470
14960 GOTO 14750
'
' *****************************************************************************
' * GENERALIZED ROUTINE TO SELECT FILE NAME FOR ANY OPTION WITHIN CONFIG *
' *****************************************************************************
'
14970 X$ = HJ$
14980 GOSUB 31060
PRINT "Specify name of the file for option " + X$ + ". ";
14990 LINE INPUT;HJ$
GOSUB 50654
15000 IF LEN(HJ$) < 1 OR LEN(HJ$) > 12 THEN _
GOTO 14980
15010 L1 = INSTR(HJ$,".")
IF L1 = 0 THEN _
IF LEN(HJ$) < 9 THEN _
GOTO 15045 ELSE _
GOTO 14980
15020 IF L1 > 9 THEN _
GOTO 14980
15030 IF L1 < 2 THEN _
GOTO 14980
15040 IF LEN(HJ$)-L1 > 3 THEN _
GOTO 14980
15045 I = 0
GOSUB 25920
IF I = 0 THEN _
RETURN
GOTO 14980
15160 X$ = HJ$
15170 LOCATE 24,5
PRINT "Specify drive in the range A->" + M$ + " for option " + X$". ";
15180 LINE INPUT;HJ$
15190 IF LEN(HJ$) <> 1 THEN _
GOTO 15170
15200 GOSUB 50654
15210 IF HJ$ < "A" OR HJ$ > M$ THEN _
GOTO 15170
15220 TB$ = HJ$
15230 RETURN
'
' *****************************************************************************
' * ALLOW A SYSOP TO EXTEND A USER'S TIME FOR UPLOADS *
' *****************************************************************************
'
15234 LOCATE 24,5
PRINT "Extend by what fraction of time uploading ";
LINE INPUT;HJ$
IF VAL(HJ$) < 0 OR VAL(HJ$) > 10 THEN _
GOTO 15234
UPLOAD.TIME.FACTOR! = VAL(HJ$)
RETURN
'
' *****************************************************************************
' * ALLOW A DEFAULT SYSTEM TYPE TO EXIT FOR NEW USERS WHEN THEY LOG ON *
' *****************************************************************************
'
15236 LOCATE 24,5
PRINT "Enter default system type ";
LINE INPUT;DEFAULT.MACHINE.TYPE$
IF LEN(DEFAULT.MACHINE.TYPE$) < 2 THEN _
GOSUB 50340 : _
GOTO 15236
RETURN
'
' *****************************************************************************
' * REQUEST NUMBER OF SECONDS TO WAIT AFTER INITIALIZING THE MODEM *
' *****************************************************************************
'
15240 LOCATE 24,5 ' CPC14-1C
PRINT "How many seconds of delay after modem initilization (1 to 99)?"; ' CPC14-1C
LINE INPUT;HJ$ ' CPC14-1C
B1 = VAL(HJ$) ' CPC14-1C
IF B1 < 1 OR B1 > 99 THEN _ ' CPC14-1C
GOTO 15240 ' CPC14-1C
MODEM.INIT.WAIT.TIME = B1 ' CPC14-1C
GOTO 12360 ' CPC14-1C
'
' *****************************************************************************
' * REQUEST NUMBER OF SECONDS TO DELAY PRIOR TO ISSUING MODEM COMMANDS *
' *****************************************************************************
'
15250 LOCATE 24,5 ' CPC14-1C
PRINT "# seconds to delay prior to issuing modem commands (0 to 99)?"; ' CPC14-1C
LINE INPUT;HJ$ ' CPC14-1C
B1 = VAL(HJ$) ' CPC14-1C
IF B1 < 0 OR B1 > 99 THEN _ ' CPC14-1C
GOTO 15250 ' CPC14-1C
MODEM.COMMAND.DELAY.TIME = B1 ' CPC14-1C
GOTO 12360 ' CPC14-1C
'
' *****************************************************************************
' * ALLOW THE SYSOP TO SPECIFY THE NUMBER OF ACTIVE BULLETINS *
' *****************************************************************************
'
15290 LOCATE 24,5
PRINT "Enter number of active 'bulletins' (0 to 99)";
15300 LINE INPUT;HJ$
15310 B1% = VAL(HJ$)
15320 IF B1% < 0 OR B1% > 99 THEN _
GOTO 15290
15330 ACTIVE.BULLETINS = B1%
GOTO 14570
'
' *****************************************************************************
' * DISPLAY PARAMETERS FOR DYNAMEIC RBBS-PC FILES *
' *****************************************************************************
'
15340 DISPLAYED.PAGE.NUMBER = 4
15350 GOSUB 24800
15360 LOCATE 4,10
PRINT "61. System file containing messages is named ----- " + MAIN.MESSAGE.FILE$
15380 LOCATE 5,10
PRINT "62. System file for 'callers' is named ----------- " + CALLERS.FILE$
15390 LOCATE 6,10
PRINT "63. System file for comments to SYSOP is named --- " + COMMENTS.FILE$
15400 LOCATE 7,10
PRINT "64. System file for recording users is named ----- " + MAIN.USER.FILE$
15405 LOCATE 8,10
PRINT "65. Extended logging to 'callers' file ----------- " + EXTENDED.LOGGING$
15406 LOCATE 9,10
PRINT"66. Record comments as private messages ---------- "+COMMENTS.AS.MESSAGES$
LOCATE 10,10 ' CPC14-1C
PRINT"67. Use machine language routines for speed ------ "+TURBO.RBBS$ ' CPC14-1C
15410 GOSUB 24890
15420 GOSUB 22160
15430 IF IX THEN _
ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,14570,16130,15450
15440 GOTO 15420
15450 GOSUB 50340
15460 IF HJ$ = "61" THEN _
GOSUB 17330 : _
GOTO 15511
15480 IF HJ$ = "62" THEN _
GOSUB 17330 : _
CALLERS.FILE$ = SJ$ + ":" + HJ$ : _
GOTO 15340
15490 IF HJ$ = "63" THEN _
GOSUB 17330 : _
COMMENTS.FILE$ = SJ$ + ":" + HJ$ : _
GOTO 15340
15500 IF HJ$ = "64" THEN _
GOSUB 17330 : _
GOTO 15512
15505 IF HJ$ = "65" THEN _
GOTO 15991
15506 IF HJ$ = "66" THEN _
GOTO 15993
IF HJ$ = "67" THEN _ ' CPC14-1C
GOTO 15820 ' CPC14-1C
15510 GOTO 15410
15511 IF LEN(HJ$) > 8 OR INSTR(HJ$,".") THEN _
HJ$ = "61" : _
GOTO 15460 ELSE _
MAIN.MESSAGE.FILE$ = SJ$ + ":" + HJ$ : _
MAIN.MESSAGE.BACKUP$ = MAIN.MESSAGE.FILE$ + ".BAK" : _
MAINMSG$ = MAIN.MESSAGE.FILE$ : _
GOTO 15340
15512 IF LEN(HJ$) > 8 OR INSTR(HJ$,".") THEN _
HJ$ = "64" : _
GOTO 15500 ELSE _
MAIN.USER.FILE$ = SJ$ + ":" + HJ$ : _
MAINUSR$ = MAIN.USER.FILE$ : _
GOTO 15340
15520 LOCATE 24,5
PRINT "(See the description of the COLOR statement in Basic.)";
RETURN
'
' *****************************************************************************
' * ALLOW A SYSOP TO SPECIFY THE FOREGROUND COLOR FOR THE LOCAL COLOR MONITOR *
' *****************************************************************************
'
15530 LOCATE 25,5
PRINT "Enter foreground color (a value between 0 and 15)";
15540 LINE INPUT;HJ$
15550 B1 = VAL(HJ$)
15560 IF B1 < 0 OR B1 > 15 THEN _
GOTO 15530
15570 FG = B1
15580 GOTO 14200
'
' *****************************************************************************
' * ALLOW A SYSOP TO SPECIFY THE BACKGROUND COLOR FOR THE LOCAL COLOR MONITOR *
' *****************************************************************************
'
15590 LOCATE 25,5
PRINT "Enter background color (a value between 0 and 7)";
15600 LINE INPUT;HJ$
15610 B1 = VAL(HJ$)
15620 IF B1 < 0 OR B1 > 7 THEN _
GOTO 15590
15630 BG = B1
15640 GOTO 14200
'
' *****************************************************************************
' * ALLOW A SYSOP TO SPECIFY THE BORDER COLOR THE LOCAL COLOR MONITOR *
' *****************************************************************************
'
15650 LOCATE 25,5
PRINT "Enter the border color (a value between 0 and 7)";
15660 LINE INPUT;HJ$
15670 B1 = VAL(HJ$)
15680 IF B1 < 0 OR B1 > 7 THEN _
GOTO 15650
15690 BORDER = B1
15700 GOTO 14200
'
' *****************************************************************************
' * SHOULD THE LOCAL MODEM'S SPEAKER BE ON OR OFF? *
' *****************************************************************************
'
15710 LOCATE 24,5
PRINT "Modem speaker default? (ON or OFF) ";
15720 LINE INPUT;HJ$
15730 IF LEN(HJ$) < 1 OR LEN(HJ$) > 3 THEN _
GOTO 15710
15740 GOSUB 50654
15750 IF HJ$ = "ON" THEN _
GOTO 15780
15760 IF HJ$ = "OFF" THEN _
GOTO 15780
15770 GOTO 15710
15780 M14$ = HJ$
15790 GOTO 14200
'
' *****************************************************************************
' * SHOULD USERS BE REMINDED OF THE MESSAGES THAT THEY LEFT? *
' *****************************************************************************
'
15800 XX$ = "Remind users of the messages they left? (YES or NO) "
GOSUB 50345
GOSUB 22380
ON AB GOTO 15810,15810,15800,15800
15810 MESSAGE.REMINDER$ = HJ$
GOTO 14200
'
' *****************************************************************************
' * SHOULD MACHINE LANGUAGE ROUTINES BE USED TO INCREASE SPEED? *
' *****************************************************************************
'
15820 XX$ = "Use machine language routines for speed? (YES or NO) " ' CPC14-1C
GOSUB 50345 ' CPC14-1C
GOSUB 22380 ' CPC14-1C
ON AB GOTO 15830,15830,15800,15800 ' CPC14-1C
15830 TURBO.RBBS$ = HJ$ ' CPC14-1C
GOTO 15340 ' CPC14-1C
'
' *****************************************************************************
' * IS THE USER ALLOWED TO BYPASS THE SYSTEM BULLETINS? *
' *****************************************************************************
'
15840 XX$ = "Are system bulletins to be optional? (YES or NO) "
GOSUB 50345
GOSUB 22380
ON AB GOTO 15860,15860,15840,15840
15860 BULLETINS.OPTIONAL$ = HJ$
GOTO 14200
'
' *****************************************************************************
' * SHOULD USER'S BE PREVENTED FROM DOWNLOADING FILES IN ASCII? *
' *****************************************************************************
'
15880 XX$ = "Is non-ascii protocol required for binary files? (YES or NO) "
GOSUB 50345
GOSUB 22380
ON AB GOTO 15900,15900,15880,15880
15900 REQUIRE.NON.ASCII$ = HJ$
GOTO 14200
'
' *****************************************************************************
' * IS MICROCOM'S MNP PROTOCOL TO BE MADE AVAILABLE? *
' *****************************************************************************
'
15911 XX$ = "Enable MICROCOM's MNP protocol? (YES or NO) "
GOSUB 50345
GOSUB 22380
ON AB GOTO 15913,15913,15911,15911
15913 MNP.SUPPORT$ = HJ$
GOTO 14200
'
' *****************************************************************************
' * SHOULD THE MAIN DIRECTORY (TEXT FILE) BE OMITTED FROM THE "NEW" COMMAND? *
' *****************************************************************************
'
15920 XX$ = "Is " + DIRECTORY.EXTENTION$ + " omitted from the N)ew command? (YES or NO) "
GOSUB 50345
GOSUB 22380
ON AB GOTO 15940,15940,15920,15920
15940 OMIT.MAIN.DIRECTORY$ = HJ$
GOTO 14200
'
' *****************************************************************************
' * SHOULD THE UPLOAD DIRECTORY (TEXT FILE) BE OMITTED FROM THE "NEW" COMMAND?*
' *****************************************************************************
'
15960 XX$ = "Is " + UPLOAD.DIRECTORY$ + " omitted from the N)ew command? (YES or NO) "
GOSUB 50345
GOSUB 22380
ON AB GOTO 15980,15980,15960,15960
15980 OMIT.UPLOAD.DIRECTORY$ = HJ$
GOTO 14200
'
' *****************************************************************************
' * IS "EXTENDED" LOGGING TO THE CALLERS FILE TO BE ACTIVATED? *
' *****************************************************************************
'
15991 LOCATE 24,5
PRINT "Do you want EXTENDED logging to the 'callers' file (YES OR NO) ";
GOSUB 22380
ON AB GOTO 15992,15992,15991,15991
15992 EXTENDED.LOGGING$ = HJ$
GOTO 15340
'
' *****************************************************************************
' * ARE COMMENTS TO BE RECORDED AS PRIVATE MESSAGES IN THE MESSAGE FILE? *
' *****************************************************************************
'
15993 LOCATE 24,5
PRINT"Do you want 'comments' recorded as private messages (YES OR NO) ";
GOSUB 22380
ON AB GOTO 15994,15994,15993,15993
15994 COMMENTS.AS.MESSAGES$ = HJ$
GOTO 15340
'
' *****************************************************************************
' * CAN THE USER INTERRUPT THE "WELCOME" FILE DISPLAY WHEN HE LOGS ON? *
' *****************************************************************************
'
16000 LOCATE 24,5
PRINT "Is system 'welcome' interruptable (YES OR NO) ";
16010 GOSUB 22380
ON AB GOTO 16020,16020,16000,16000
16020 WELCOME.INTERRUPTABLE$ = HJ$
GOTO 14200
'
' *****************************************************************************
' * HOW MANY SECONDS SHOULD USERS BE ALLOWED TO BE IDLE BEFORE LOGGING HIM OFF*
' *****************************************************************************
'
16031 LOCATE 24,5
PRINT "Seconds users can be idle before being logged off";
16032 LINE INPUT;HJ$
16033 WAIT.BEFORE.DISCONNECT = VAL(HJ$)
16034 IF WAIT.BEFORE.DISCONNECT < 1 OR WAIT.BEFORE.DISCONNECT > 32400 THEN _
GOTO 16031
16035 GOTO 14200
'
' *****************************************************************************
' * IDENTIFY THE TYPE OF PC THAT RBBS-PC WILL BE RUNNING ON *
' *****************************************************************************
'
16040 CLS
LOCATE 5,5
PRINT "Please select the type of PC which RBBS-PC will be running on :"
LOCATE 7,10
PRINT "0. IBM PC, IBM XT, or IBM AT"
LOCATE 9,10
PRINT "1. Compaq/Plus or compatable that uses interrupt 7F"
LOCATE 11,10
PRINT "2. IBM PCjr
16045 LOCATE 13,10
PRINT "3. Other compatable under IBM's DOS (i.e. PC-DOS)
16050 GOSUB 50340
LOCATE 24,5
PRINT "Select environment (0 to 3, CR to end)";
LINE INPUT;X$
IF X$ = "" THEN _
GOTO 14200
COMPUTER.TYPE = VAL(X$)
GOSUB 16060
IF COMPUTER.TYPE = 2 THEN _
GOTO 16071
GOTO 14200
16060 IF COMPUTER.TYPE < 0 OR COMPUTER.TYPE > 3 THEN _
GOTO 16050
16062 IF COMPUTER.TYPE = 0 THEN _
COMPUTER.TYPE$ = "IBM PC, XT, or AT
16064 IF COMPUTER.TYPE = 1 THEN _
COMPUTER.TYPE$ = "Compaq/Plus
16066 IF COMPUTER.TYPE = 2 THEN _
COMPUTER.TYPE$ = "PCjr
16068 IF COMPUTER.TYPE = 3 THEN _
COMPUTER.TYPE$ = "Other under PC-DOS
16070 RETURN
16071 PCJR = 0
XX$ = "Is an IBM PCjr Internal Modem installed? (YES or NO)"
GOSUB 50345
GOSUB 22380
ON AB GOTO 16072,14200,16071,16071
16072 PCJR = 1
GOTO 14200
'
' *****************************************************************************
' * CAN MODEM COMMANDS BE ISSUED EVEN WHEN THE MODEM IS RINGING? *
' *****************************************************************************
'
16121 LOCATE 24,5
PRINT "Wait to issue modem commands between rings? (YES OR NO) ";
16122 GOSUB 22380
ON AB GOTO 16123,16123,16121,16121
16123 COMMANDS.BETWEEN.RINGS$ = HJ$
GOTO 14200
'
' *****************************************************************************
' * WHAT BAUD RATE SHOULDT RBBS-PC INITIALLY OPEN THE MODEM AT? *
' *****************************************************************************
'
16124 LOCATE 25,5
PRINT "Enter baud rate (300, 1200, 2400, 4800, 9600) to open modem at ";
16125 LINE INPUT;HJ$
16126 B1 = VAL(HJ$)
16127 IF B1 = 300 OR B1 = 1200 OR B1 = 2400 OR B1 = 4800 OR B1 = 9600 THEN _
GOTO 16128 ELSE _
GOTO 16124
16128 MODEM.INIT.BAUD$ = MID$(STR$(B1),2)
16129 GOTO 14200
'
' *****************************************************************************
' * DISPLAY THE PARAMETERS FOR RBBS-PC'S "DOORS" *
' *****************************************************************************
'
16130 DISPLAYED.PAGE.NUMBER = 5
16140 GOSUB 24800
16150 LOCATE 3,10
PRINT "81. Is the 'door' subystem available? ------------ " + DOORS.AVAILABLE$
16160 LOCATE 4,10
PRINT "82. The 'door' subsystem menu is named ----------- " + MENU$(5)
16170 LOCATE 5,10
PRINT "83. File RBBS builds dynamically to open a 'door'- " + RCTTY.BAT$
16180 LOCATE 6,10
PRINT "84. When a 'door' closes, file to re-invoke RBBS - " + RBBS.BAT$
16185 LOCATE 7,10
PRINT "85. Drive to look for COMMAND.COM on ------------- " + DISK.FOR.DOS$
16190 GOSUB 24890
16200 GOSUB 22160
16210 IF IX THEN _
ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,15340,16910,16230
16220 GOTO 16200
16230 GOSUB 50340
16240 IF HJ$ = "81" THEN _
GOTO 16290
16250 IF HJ$ = "82" THEN _
GOSUB 17330 : _
MENU$(5) = SJ$ + ":" + HJ$ : _
GOTO 16130
16260 IF HJ$ = "83" THEN _
GOSUB 17330 : _
RCTTY.BAT$ = SJ$ + ":" + HJ$ : _
GOTO 16130
16270 IF HJ$ = "84" THEN _
GOSUB 17330 : _
RBBS.BAT$ = SJ$ + ":" + HJ$ : _
GOTO 16130
16275 IF HJ$ = "85" THEN _
A$ = "COMMAND.COM" : _
GOSUB 13253 : _
DISK.FOR.DOS$ = HJ$ + ":" : _
GOTO 16130
'
' *****************************************************************************
' * SHOULD "DOORS" BE AVAILABLE? *
' *****************************************************************************
'
16280 GOTO 16190
16290 XX$ = "Is the 'door' subsystem available? (YES or NO) "
GOSUB 50345
GOSUB 22380
ON AB GOTO 16310,16310,16290,16290
16310 DOORS.AVAILABLE$ = HJ$
16320 IF DOORS.AVAILABLE$ = "NO" THEN _
GOTO 16130
GOSUB 50340
LOCATE 24,1
PRINT "Will you be running RBBS-PC under MultiLink from The Software Link? ";
16330 GOSUB 22380
ON AB GOTO 16340,16350,16290,16290
16340 DELAY! = FNTI! + 15
GOSUB 16470
GOTO 16130
16350 GOSUB 16380
GOTO 16360
16360 LOCATE 23,1
PRINT "Current Multi-Link terminal type for DOORS is ";DOORS.TERMINAL.TYPE
16370 GOSUB 50340
LOCATE 24,1
PRINT "Enter Multi-Link terminal type for DOORS ";
GOSUB 17420
DOORS.TERMINAL.TYPE = B1
IF DOORS.TERMINAL.TYPE < 0 THEN _ ' CPC14-1C
GOTO 16370
IF DOORS.TERMINAL.TYPE > 12 THEN _
GOTO 16370
GOTO 16130
16380 CLS
'
' *****************************************************************************
' * NOTIFY THE SYSOP OF THE CONDITIONS FOR USING RBBS-PC UNDER MULTI-LINK *
' *****************************************************************************
'
PRINT "Multi-Link is a software product of The Software Link, Inc. located"
PRINT "at 6700 23-B Roswell Road, Atlanta, Georgia 30328. It allows IBM's"
PRINT "DOS 1.1, 2.x, or 3.x on the IBM PC to become a multi-tasking operating"
16400 PRINT "system. The Capital PC User Group has no connection whatsoever with"
16410 PRINT "this company or it's products. In fact The Software Link has only"
PRINT "occasionally sent updates of it's new releases to us. RBBS-PC has"
PRINT "only been tested under Release 3.02 of MultiLink and earlier versions
16420 PRINT "of MultiLink. I feel strongly that IBM's DOS for the PC should be"
PRINT "multi-tasking. Because MultiLink provides this capability for the widest
16430 PRINT "ranges of DOS software for the IBM PC, RBBS-PC has been enhanced"
PRINT "to run under Multi-Link. Any questions regarding RBBS-PC under Multi-Link"
PRINT "(other than Release 3.02 of Multi-Link) should be directed to The
16440 PRINT "Software Link's customer support group at (404) 998-0788."
PRINT ""
PRINT "I have run RBBS-PC under Multi-Link since December 1983 -- since Multi-Link"
PRINT "release 2.04. Since Multi-Link release 2.06 I HAVE NEVER HAD A SYSTEM CRASH
16450 PRINT "due to Multi-Link. I think it is a quality product but a bit over-priced."
PRINT "My opnion on Multi-Link's price reflects my prejudice that all PC software"
PRINT "should be relatively inexpensive."
PRINT ""
PRINT SPC(60);"Tom Mack
16460 PRINT SPC(60);"May, 25, 1986"
RETURN
'
' *****************************************************************************
' * NOTIFY THE SYSOP OF THE CONDITIONS FOR USING RBBS-PC "DOORS" *
' *****************************************************************************
'
16470 CLS
PRINT " ******Warning******"
PRINT "IBM's DOS absolutely REQUIRES any software package running"
PRINT "as a 'door' (i.e. via a communication port) to monitor the"
PRINT "communication port! Unless the software that you invoke via
16480 PRINT "the RBBS-PC 'door' mechanism monitors the communication line,"
PRINT "your system will be vulnerable to being hung -- and worse!!!"
PRINT "If you don't THROUGHLY understand section 11.0 of RBBS-PC's
16490 PRINT "documentation which discusses the pitfalls of opening RBBS-PC's"
PRINT "'doors' to your users, DON'T use 'doors'!!!!!
16640 IF FNTI! < DELAY! THEN _
GOTO 16640 ELSE _
RETURN
'
' *****************************************************************************
' * SHOULD USERS BE LIMITED TO A MAXIMUM AMOUNT OF TIME ON THE SYSTEM EACH DAY*
' *****************************************************************************
'
16650 XX$ = "Limit the maximum time a users can be on each day? (YES or NO) "
GOSUB 50345
GOSUB 22380
ON AB GOTO 16670,16670,16650,16650
16670 LIMIT.DAILY.TIME$ = HJ$
GOTO 12360
'
' *****************************************************************************
' * SHOULD USERS BE REMINDED OF THE NUMBER FILE TRANSFERS THAT THEY HAVE DONE?*
' *****************************************************************************
'
16690 XX$ = "Remind users of # uploads and downloads? (YES or NO) "
GOSUB 50345
GOSUB 22380
ON AB GOTO 16710,16710,16690,16690
16710 REMIND.FILE.TRANSFERS$ = HJ$
GOTO 14200
'
' *****************************************************************************
' * SHOULD USERS BE REMINDED OF THEIR TERMINAL'S PROVILE? *
' *****************************************************************************
'
16722 XX$ = "Remind users of their terminal's profile? (YES or NO) "
GOSUB 50345
GOSUB 22380
ON AB GOTO 16724,16724,16722,16722
16724 REMIND.PROFILE$ = HJ$
GOTO 14200
'
' *****************************************************************************
' * ALLOW THE SYSOP TO SELECT "DUMB" MODEM (BUT WITH AUTO-ANSWER) MODE *
' *****************************************************************************
'
16725 XX$ = "Are you using a non-Hayes auto-answer only modem? (YES or NO) "
GOSUB 50345
GOSUB 22380
ON AB GOTO 16726,16726,16725,16725
16726 DUMB.MODEM$ = HJ$
GOTO 14200
'
' *****************************************************************************
' * SELECT A DEFAULT USER'S PAGE LENGTH *
' *****************************************************************************
'
16730 LOCATE 24,5
PRINT "Default user page length?(a value between 0 and 255)";
16740 LINE INPUT;HJ$
16750 B1 = VAL(HJ$)
16760 IF B1 < 0 OR B1 > 255 THEN _
GOTO 16730
16770 PAGE.LENGTH = B1
16780 GOTO 14200
'
' *****************************************************************************
' * SPECIFY THE MAXIMUM NUMBER OF LINES ALLOWED PER MESSAGE *
' *****************************************************************************
'
16790 LOCATE 24,5
PRINT "Maximum number of lines allowed per message (1->99)";
16800 LINE INPUT;HJ$
16810 B1 = VAL(HJ$)
16820 IF B1 < 1 OR B1 > 99 THEN _
GOTO 16790
16830 MAX.MESSAGE.LINES = B1
16840 GOTO 14200
'
' *****************************************************************************
' * SECURITY LEVEL TO TEMPORARILY IMPOSE ON CONFERENCE VIEWERS *
' *****************************************************************************
'
16850 LOCATE 24,5
PRINT "Security level temporarily imposed on conference 'viewers'";
16860 HJ$ = "V>iew
16870 GOSUB 17420
CONFERENCE.VIEWER.SEC.LVL = B1
16900 GOTO 16910
'
' *****************************************************************************
' * DISPLAY THE PARAMETERS FOR RBBS-PC'S SECURITY SYSTEM *
' *****************************************************************************
'
16910 DISPLAYED.PAGE.NUMBER = 6
16920 GOSUB 24800
16930 LOCATE 3,9
PRINT "101. Minimum security level to get onto RBBS ------ "STR$(MINIMUM.LOGON.SECURITY)
16940 LOCATE 4,9
PRINT "102. Default security level for new callers ------- "STR$(DEFAULT.SECURITY.LEVEL)
16950 LOCATE 5,9
PRINT "103. Security level for SYSOP --------------------- "STR$(SYSOP.SECURITY.LEVEL)
16960 LOCATE 6,9
PRINT "104. Files with download security are listed in --- " + FILESEC.FILE$
16970 LOCATE 7,9
PRINT "105. Minimum security level to see SYSOP's menu --- "STR$(SYSOP.MENU.SECURITY.LEVEL)
16980 LOCATE 8,9
PRINT "106. Minimum security level to use RBBS-PC 'doors' " + STR$(DOORS.SECURITY.LEVEL)
16990 LOCATE 9,9
PRINT "107. Max # security violations before disconnect -- "STR$(MAXIMUM.VIOLATIONS)
17000 M22$ = STR$(SF)
IX = SYSOP.FUNCTION(1)
FOR I = 2 TO 7
IF IX <> SYSOP.FUNCTION(I) THEN _
M22$ = "(Variable)" : _
GOTO 17010 ELSE _
NEXT
17010 LOCATE 10,9
PRINT "108. Security level for SYSOP functions ----------- "M22$
17020 M23$ = STR$(MM)
IX = MAIN.FUNCTION(1)
FOR I = 2 TO 21
IF IX<>MAIN.FUNCTION(I) THEN _
M23$ = "(Variable)" : _
GOTO 17030 ELSE _
NEXT
17030 LOCATE 11,9
PRINT "109. Security level for main menu functions ------- "M23$
17040 M24$ = STR$(FC)
IX = FILES.FUNCTION(1)
FOR I = 2 TO 10
IF IX<>FILES.FUNCTION(I) THEN _
M24$ = "(Variable)" : _
GOTO 17050 ELSE _
NEXT
17050 LOCATE 12,9
PRINT "110. Security level for file menu functions ------- "M24$
17060 M25$ = STR$(UE)
IX = UTILITY.FUNCTION(1)
FOR I = 2 TO 16
IF IX<>UTILITY.FUNCTION(I) THEN _
M25$ = "(Variable)" : _
GOTO 17070 ELSE _
NEXT
17070 LOCATE 13,9
PRINT "111. Security level for utilities menu functions -- "M25$
17080 LOCATE 14,9
PRINT "112. File with privileged group passwords is named- "PASSWORD.FILE$
17090 LOCATE 15,9
PRINT "113. Max # of password changes in a session ------- "STR$(MAXIMUM.PASSWORD.CHANGES)
17100 LOCATE 16,9
PRINT "114. Min. security level for temp. password changes "STR$(MINIMUM.SECURITY.FOR.TEMP.PASSWORD)
17110 LOCATE 17,9
PRINT "115. Min. security level to overwrite on uploads -- "STR$(OVERWRITE.SECURITY.LEVEL)
17115 LOCATE 18,9
PRINT "116. Security level of conference 'viewers' ------- "STR$(CONFERENCE.VIEWER.SEC.LVL)
17116 LOCATE 19,9
PRINT "117. User's security exempted from 'packing' ------ "STR$(SEC.LVL.EXEMPT.FRM.PURGING)
17120 GOSUB 24890
17130 GOSUB 22160
17140 IF IX THEN _
ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,16130,21550,17160
17150 GOTO 17130
17160 GOSUB 50340
17170 IF HJ$ = "101" THEN _
GOSUB 18730 : _
GOSUB 17410 : _
MINIMUM.LOGON.SECURITY = B1 : _
GOTO 16910
17180 IF HJ$ = "102" THEN _
GOSUB 18730 : _
GOSUB 17410 : _
DEFAULT.SECURITY.LEVEL = B1 : _
GOTO 16910
17190 IF HJ$ = "103" THEN _
GOSUB 18730 : _
GOSUB 17410 : _
SYSOP.SECURITY.LEVEL = B1 : _
GOTO 16910
17200 IF HJ$ = "104" THEN _
GOSUB 17330 : _
FILESEC.FILE$ = SJ$ + ":" + HJ$ : _
GOTO 16910
17210 IF HJ$ = "105" THEN _
GOSUB 18730 : _
GOSUB 17410 : _
SYSOP.MENU.SECURITY.LEVEL = B1 : _
GOTO 16910
17220 IF HJ$ = "106" THEN _
GOSUB 18730 : _
GOSUB 17410 : _
DOORS.SECURITY.LEVEL = B1 : _
GOTO 16910
17230 IF HJ$ = "107" THEN _
GOSUB 18730 : _
GOSUB 17410 : _
MAXIMUM.VIOLATIONS = B1 : _
GOTO 16910
17240 IF HJ$ = "108" THEN _
GOTO 17460
17250 IF HJ$ = "109" THEN _
GOSUB 17460 : _
MM = B1 : _
GOTO 16910
17260 IF HJ$ = "110" THEN _
GOSUB 17460 : _
FC = B1 : _
GOTO 16910
17270 IF HJ$ = "111" THEN _
GOSUB 17460 : _
UE = B1 : _
GOTO 16910
17280 IF HJ$ = "112" THEN _
GOSUB 17330 :_
PASSWORD.FILE$ = SJ$ + ":" + HJ$ :_
GOTO 16910
17290 IF HJ$ = "113" THEN _
GOSUB 50340 : _
LOCATE 24,1 : _
PRINT "Maximum number of password changes is? (0 or more)"; : _
GOSUB 17420 : _
MAXIMUM.PASSWORD.CHANGES = B1 : _
IF B1 < 0 THEN _
GOTO 17290 ELSE _
GOTO 16910
17300 IF HJ$ = "114" THEN _
GOSUB 18730 : _
GOSUB 17410 : _
MINIMUM.SECURITY.FOR.TEMP.PASSWORD = B1 : _
GOTO 16910
17310 IF HJ$ = "115" THEN _
HJ$ = "overwriting files on upload" : _
GOSUB 17410 : _
OVERWRITE.SECURITY.LEVEL = B1 : _
GOTO 16910
17315 IF HJ$ = "116" THEN _
GOTO 16850
17316 IF HJ$ = "117" THEN _
GOSUB 18730 : _
GOSUB 17410 : _
SEC.LVL.EXEMPT.FRM.PURGING = B1 : _
GOTO 16910
17320 GOTO 17120
'
' *****************************************************************************
' * STANDARD ROUTINE TO SIMPLY SPECIFY A DRIVE LETTER FOR ANY OPTION *
' *****************************************************************************
'
17330 X$ = HJ$
LOCATE 24,5
PRINT "Specify drive (A->" + M$ + ") where file for option " + X$ + " will be located. ";
17340 LINE INPUT;HJ$
17350 IF LEN(HJ$) <> 1 THEN _
HJ$ = X$ : _
GOTO 17330
17360 GOSUB 50654
17370 IF HJ$<"A" OR HJ$>M$ THEN _
HJ$ = X$ : _
GOTO 17330
17380 SJ$ = HJ$
17390 GOSUB 14980
17400 RETURN
'
' *****************************************************************************
' * STANDARD ROUTINE TO REQUEST A SECURITY LEVEL FOR A SPECIFIC COMMAND *
' *****************************************************************************
'
17410 GOSUB 50340
LOCATE 24,1
PRINT "Security level for " + HJ$ + " is? ";
17420 LINE INPUT;HK$
17430 B1 = VAL(HK$)
17440 IF B1 = 0 AND HK$ <> "0" THEN _
GOTO 17410
17450 RETURN
'
' *****************************************************************************
' * MENU COMMAND PROCESSING *
' *****************************************************************************
'
17460 IF HJ$ = "108" THEN _
CO$ = "SYSOP" : _
GOTO 18480
17470 IF HJ$ = "109" THEN _
CO$ = "Main Menu" : _
GOTO 18100
17480 IF HJ$ = "110" THEN _
CO$ = "File System" : _
GOTO 17820
17490 IF HJ$ = "111" THEN _
CO$ = "Utilities
'
' *****************************************************************************
' * STANDARD ROUTINE TO REQUEST A SECURITY LEVEL FOR UTILITY SUBSYSTEM COMANDS*
' *****************************************************************************
'
17500 LOCATE 24,1
PRINT "Set ALL the " + CO$ + " commands to the SAME security level? (YES or NO)";
17510 LINE INPUT;X$
17520 IF LEN(X$) < 1 OR LEN(X$) > 3 THEN _
GOTO 17500
17530 SWAP HJ$,X$
GOSUB 50654
SWAP HJ$,X$
17540 IF X$ = "YES" OR X$ = "Y" THEN _
HJ$ = "all " + CO$ + " commands" :_
GOSUB 17410 : _
FOR I = 1 TO 16 : _
UTILITY.FUNCTION(I) = B1 : _
NEXT : _
UE = B1 : _
GOTO 16910
17550 IF X$ = "NO" OR X$ = "N" THEN _
GOTO 17570
17560 GOTO 17500
17570 GOSUB 25180
LOCATE 5,10
PRINT "B)aud rate " + STR$(UTILITY.FUNCTION(1))
LOCATE 6,10
PRINT "C)ase change " + STR$(UTILITY.FUNCTION(2))
LOCATE 7,10
PRINT "F)ile transfer protocol " + STR$(UTILITY.FUNCTION(3))
17610 LOCATE 8,10
PRINT "G)raphics " + STR$(UTILITY.FUNCTION(4))
LOCATE 9,10
PRINT "H)elp " + STR$(UTILITY.FUNCTION(5))
LOCATE 10,10
PRINT "L)ine feeds " + STR$(UTILITY.FUNCTION(6))
17640 LOCATE 11,10
PRINT "M)sg margin " + STR$(UTILITY.FUNCTION(7))
LOCATE 12,10
PRINT "N)ulls " + STR$(UTILITY.FUNCTION(8))
LOCATE 13,10
PRINT "P)ass word " + STR$(UTILITY.FUNCTION(9))
17670 LOCATE 14,10
PRINT "Q)uit to main menu " + STR$(UTILITY.FUNCTION(10))
LOCATE 15,10
PRINT "R)eview Default " + STR$(UTILITY.FUNCTION(11))
LOCATE 16,10
PRINT "S)tatistics " + STR$(UTILITY.FUNCTION(12))
17690 LOCATE 17,10
PRINT "T)ime " + STR$(UTILITY.FUNCTION(13))
LOCATE 18,10
PRINT "U)serlog " + STR$(UTILITY.FUNCTION(14))
LOCATE 19,10
PRINT "X)Expert on/off " + STR$(UTILITY.FUNCTION(15))
17710 LOCATE 20,10
PRINT "!)Prompt sound " + STR$(UTILITY.FUNCTION(16))
17720 GOSUB 25210
SWAP HJ$,X$
GOSUB 50654
SWAP HJ$,X$
FF = INSTR("BCFGHLMNPQRSTUX!",X$)
IF FF = 0 THEN _
GOTO 17720
17790 HJ$ = "all " + CO$ + " '" + X$ + "' commands"
GOSUB 17410
17800 UTILITY.FUNCTION(FF) = B1
17810 GOTO 17570
'
' *****************************************************************************
' * STANDARD ROUTINE TO REQUEST A SECURITY LEVEL FOR FILES SUBSYSTEM COMANDS *
' *****************************************************************************
'
17820 LOCATE 24,1
PRINT "Set ALL the " + CO$ + " commands to the SAME security level? (YES or NO)";
17830 LINE INPUT;X$
17840 IF LEN(X$) < 1 OR LEN(X$) > 3 THEN _
GOTO 17820
17850 SWAP HJ$,X$
GOSUB 50654
SWAP HJ$,X$
17860 IF X$ = "YES" OR X$ = "Y" THEN _
HJ$ = "all " + CO$ + " commands" : _
GOSUB 17410 : _
FOR I = 1 TO 10 : _
FILES.FUNCTION(I) = B1 : _
NEXT : _
FC = B1 : _
GOTO 16910
17870 IF X$ = "NO" OR X$ = "N" THEN _
GOTO 17890
17880 GOTO 17820
17890 GOSUB 25180
LOCATE 5,10
PRINT "D)ownload a file " + STR$(FILES.FUNCTION(1))
LOCATE 6,10
PRINT "G)oodbye " + STR$(FILES.FUNCTION(2))
LOCATE 7,10
PRINT "H)elp " + STR$(FILES.FUNCTION(3))
17950 LOCATE 8,10
PRINT "L)ist files " + STR$(FILES.FUNCTION(4))
LOCATE 9,10
PRINT "N)ew files " + STR$(FILES.FUNCTION(5))
LOCATE 10,10
PRINT "Q)uit to main menu " + STR$(FILES.FUNCTION(6))
17975 LOCATE 11,10
PRINT "S)earch directories for string " + STR$(FILES.FUNCTION(7))
LOCATE 12,10
PRINT "U)pload a file " + STR$(FILES.FUNCTION(8))
LOCATE 13,10
PRINT "X)Expert on/off " + STR$(FILES.FUNCTION(9))
17990 LOCATE 14,10
PRINT "?) Xfer info " + STR$(FILES.FUNCTION(10))
18000 GOSUB 25210
SWAP HJ$,X$
GOSUB 50654
SWAP HJ$,X$
FF = INSTR("DGHLNQSUX?",X$)
IF FF = 0 THEN _
GOTO 18000
18070 HJ$ = "all " + CO$ + " '" + X$ + "' commands"
GOSUB 17410
18080 FILES.FUNCTION(FF) = B1
18090 GOTO 17890
'
' *****************************************************************************
' * STANDARD ROUTINE TO REQUEST A SECURITY LEVEL FOR MESSAGE SUBSYSTEM COMANDS*
' *****************************************************************************
'
18100 LOCATE 24,1
PRINT "Set ALL the " + CO$ + " commands to the SAME security level? (YES or NO)";
18110 LINE INPUT;X$
18120 IF LEN(X$) < 1 OR LEN(X$) > 3 THEN _
GOTO 18100
18130 SWAP HJ$,X$
GOSUB 50654
SWAP HJ$,X$
18140 IF X$ = "YES" OR X$ = "Y" THEN _
HJ$ = "all " + CO$ + " commands" : _
GOSUB 17410 : _
FOR I = 1 TO 21 : _
MAIN.FUNCTION(I) = B1 : _
NEXT : _
MM = B1 : _
GOTO 16910
18150 IF X$ = "NO" OR X$ = "N" THEN _
GOTO 18170
18160 GOTO 18100
18170 GOSUB 25180
LOCATE 3,8
PRINT "Command Security Level"
LOCATE 3,37
PRINT " Command Security Level"
LOCATE 5,5
PRINT "B)ulletins " + STR$(MAIN.FUNCTION(1))
LOCATE 6,5
PRINT "C)omments " + STR$(MAIN.FUNCTION(2))
18220 LOCATE 7,5
PRINT "D)oor subystem " + STR$(MAIN.FUNCTION(3))
LOCATE 8,5
PRINT "E)nter message " + STR$(MAIN.FUNCTION(4))
LOCATE 9,5
PRINT "F)iles system " + STR$(MAIN.FUNCTION(5))
LOCATE 10,5
PRINT "G)oodbye " + STR$(MAIN.FUNCTION(6))
18260 LOCATE 11,5
PRINT "H)elp " + STR$(MAIN.FUNCTION(7))
LOCATE 12,5
PRINT "I)nitial welcome " + STR$(MAIN.FUNCTION(8))
LOCATE 13,5
PRINT "J)oin a conference " + STR$(MAIN.FUNCTION(9))
LOCATE 14,5
PRINT "K)ill messages " + STR$(MAIN.FUNCTION(10))
18290 LOCATE 15,5
PRINT "L)ines per page " + STR$(MAIN.FUNCTION(11))
LOCATE 5,40
PRINT "O)perator " + STR$(MAIN.FUNCTION(12))
LOCATE 6,40
PRINT "P)ersonal mail " + STR$(MAIN.FUNCTION(13))
LOCATE 7,40
PRINT "Q)uick scan " + STR$(MAIN.FUNCTION(14))
18330 LOCATE 8,40
PRINT "R)ead messages " + STR$(MAIN.FUNCTION(15))
LOCATE 9,40
PRINT "S)can messages " + STR$(MAIN.FUNCTION(16))
LOCATE 10,40
PRINT "U)tilities (more) " + STR$(MAIN.FUNCTION(17))
LOCATE 11,40
PRINT "V)iew a conference " + STR$(MAIN.FUNCTION(18))
18357 LOCATE 12,40
PRINT "W)ho's on other nodes " + STR$(MAIN.FUNCTION(19))
LOCATE 13,40
PRINT "X)Expert on/off " + STR$(MAIN.FUNCTION(20))
LOCATE 14,40
PRINT "?)Functions " + STR$(MAIN.FUNCTION(21))
18380 GOSUB 25210
SWAP HJ$,X$
GOSUB 50654
SWAP HJ$,X$
FF = INSTR("BCDEFGHIJKLOPQRSUVWX?",X$)
IF FF = 0 THEN _
GOTO 18380
18450 HJ$ = "all " + CO$ + " '" + X$ + "' commands"
GOSUB 17410
18460 MAIN.FUNCTION(FF) = B1
18470 GOTO 18170
'
' *****************************************************************************
' * STANDARD ROUTINE TO REQUEST SECURITY LEVELS FOR UTILIITY SUBSYSTEM COMANDS*
' *****************************************************************************
'
18480 LOCATE 24,1
PRINT "Set ALL the " + CO$ + " commands to the SAME security level? (YES or NO)";
18490 LINE INPUT;X$
18500 IF LEN(X$) < 1 OR LEN(X$) > 3 THEN _
GOTO 18480
18510 SWAP HJ$,X$
GOSUB 50654
SWAP HJ$,X$
18520 IF X$ = "YES" OR X$ = "Y" THEN _
HJ$ = "all " + CO$ + " commands" : _
GOSUB 17410 : _
FOR I = 1 TO 7 : _
SYSOP.FUNCTION(I) = B1 : _
NEXT : _
SF = B1 : _
GOTO 16910
18530 IF X$ = "NO" OR X$ = "N" THEN _
GOTO 18550
18540 GOTO 18480
18550 GOSUB 25180
LOCATE 5,10
PRINT " 1 List comments " + STR$(SYSOP.FUNCTION(1))
LOCATE 6,10
PRINT " 2 List callers log " + STR$(SYSOP.FUNCTION(2))
LOCATE 7,10
PRINT " 3 Recover a Msg " + STR$(SYSOP.FUNCTION(3))
18610 LOCATE 8,10
PRINT " 4 Erase comments " + STR$(SYSOP.FUNCTION(4))
LOCATE 9,10
PRINT " 5 Users maintenance " + STR$(SYSOP.FUNCTION(5))
LOCATE 10,10
PRINT " 6 Toggle page bell " + STR$(SYSOP.FUNCTION(6))
18650 LOCATE 11,10
PRINT " 7 Exit to DOS " + STR$(SYSOP.FUNCTION(7))
18670 GOSUB 25210
IF VAL(X$) < 1 OR VAL(X$) > 7 THEN _
GOTO 18670
18700 HJ$ = "all " + CO$ + " '" + X$ + "' commands"
GOSUB 17410
18710 SYSOP.FUNCTION(VAL(X$)) = B1
18720 GOTO 18550
'
' *****************************************************************************
' * COMMON SUBROUTINE TO DISPLAY OPTION *
' *****************************************************************************
'
18730 HJ$ = "option " + HJ$
RETURN
'
' *****************************************************************************
' * CONVERT DISPLAYABLE OPTIONS INTO RBBS-PC.DEF PARAMETER VARIABLES *
' *****************************************************************************
'
18740 GOSUB 50340
IF EXPERT.USER$ = "NOVICE" THEN _
EXPERT.USER = 0
18750 IF EXPERT.USER$ = "EXPERT" THEN _
EXPERT.USER = -1
18760 DOWNLOAD.DRIVES$ = DRIVES.FOR.DOWNLOADS$ + DRIVE.FOR.UPLOADS$
18770 PROMPT.BELL = -1
IF PROMPT.BELL$ = "OFF" THEN _
PROMPT.BELL = 0
18772 PAGING.PRINTER.SUPPORT$ = ". "
IF M11$ = "YES" THEN _
PAGING.PRINTER.SUPPORT$ = ". " + CHR$(7)
18774 CODE.TYPE = FALSE
IF CODE.TYPE$ = "COMPILED" THEN _
CODE.TYPE = TRUE
18776 MID$(MODEM.INIT.COMMAND$,4,1) = "1"
IF M14$ = "OFF" THEN _
MID$(MODEM.INIT.COMMAND$,4,1) = "0"
18778 BULLETINS.OPTIONAL = FALSE
IF BULLETINS.OPTIONAL$ = "YES" THEN _
BULLETINS.OPTIONAL = TRUE
18780 MESSAGE.REMINDER = FALSE
IF MESSAGE.REMINDER$ = "YES" THEN _
MESSAGE.REMINDER = TRUE
18782 REQUIRE.NON.ASCII = FALSE
IF REQUIRE.NON.ASCII$ = "YES" THEN _
REQUIRE.NON.ASCII = TRUE
18784 WELCOME.INTERRUPTABLE = FALSE
IF WELCOME.INTERRUPTABLE$ = "YES" THEN _
WELCOME.INTERRUPTABLE = TRUE
18786 REMIND.FILE.TRANSFERS = FALSE
IF REMIND.FILE.TRANSFERS$ = "YES" THEN _
REMIND.FILE.TRANSFERS = TRUE
18788 REMIND.PROFILE = FALSE
IF REMIND.PROFILE$ = "YES" THEN _
REMIND.PROFILE = TRUE
18790 DOORS.AVAILABLE = FALSE
IF DOORS.AVAILABLE$ = "YES" THEN _
DOORS.AVAILABLE = TRUE
18792 LIMIT.DAILY.TIME = FALSE
IF LIMIT.DAILY.TIME$ = "YES" THEN _
LIMIT.DAILY.TIME = TRUE
18794 COMMANDS.BETWEEN.RINGS = FALSE
IF COMMANDS.BETWEEN.RINGS$ = "YES" THEN _
COMMANDS.BETWEEN.RINGS = TRUE
18796 MNP.SUPPORT = FALSE
IF MNP.SUPPORT$ = "YES" THEN _
MNP.SUPPORT = TRUE
18799 WILL.SUBDIRS.B.USED = FALSE
IF WILL.SUBDIRS.B.USED$ = "YES" THEN _
WILL.SUBDIRS.B.USED = TRUE
18801 UPLOAD.TO.SUBDIR = FALSE
IF UPLOAD.TO.SUBDIR$ = "YES" THEN _
UPLOAD.TO.SUBDIR = TRUE
18803 DOWNLOAD.TO.SUBDIR = FALSE
IF DOWNLOAD.TO.SUBDIR$ = "YES" THEN _
DOWNLOAD.TO.SUBDIR = TRUE
18805 RESTRICT.BAUD = FALSE
IF RESTRICT.BAUD$ = "YES" THEN _
RESTRICT.BAUD = TRUE
18806 IF RESTRICT.BAUD$="YES=Registered users" THEN _
RESTRICT.BAUD=-2
18807 USE.COLOR = FALSE
IF USE.COLOR$ = "YES" THEN _
USE.COLOR = TRUE
18809 DISKFULL.GO.OFFLINE = FALSE
IF DISKFULL.GO.OFFLINE$ = "YES" THEN _
DISKFULL.GO.OFFLINE = TRUE
18811 EXTENDED.LOGGING = FALSE
IF EXTENDED.LOGGING$ = "YES" THEN _
EXTENDED.LOGGING = TRUE
18813 DUMB.MODEM = FALSE
IF DUMB.MODEM$ = "YES" THEN _
DUMB.MODEM = TRUE
18814 COMMENTS.AS.MESSAGES=FALSE
IF COMMENTS.AS.MESSAGES$="YES" THEN _
COMMENTS.AS.MESSAGES=TRUE
TURBO.RBBS = FALSE ' CPC14-1C
IF TURBO.RBBS$ = "YES" THEN _ ' CPC14-1C
TURBO.RBBS = TRUE ' CPC14-1C
18989 IF MAIN.MESSAGE.FILE$ <> MAINMSG$ THEN _
MAIN.MESSAGE.FILE$ = MAINMSG$
18990 IF MAIN.USER.FILE$ <> MAINUSR$ THEN _
MAIN.USER.FILE$ = MAINUSR$
18998 IF F THEN _
GOSUB 30040
18999 OPEN "O",#1,CONFIG.FILENAME$
19010 IF INSTR(MO$,":") < 1 THEN _
MO$ = MO$ + ":
19020 IF INSTR(SJ$,":") < 1 THEN _
SJ$ = SJ$ + ":
19030 IF INSTR(TB$,":") < 1 THEN _
TB$ = TB$ + ":
19031 IF INSTR(DRIVE.FOR.BULLETINS$,":") < 1 THEN _
DRIVE.FOR.BULLETINS$ = DRIVE.FOR.BULLETINS$ + ":
19032 T$ = DIRECTORY.EXTENTION$
IF INSTR(DIRECTORY.EXTENTION$,".") THEN _
T$ = MID$(DIRECTORY.EXTENTION$,INSTR(DIRECTORY.EXTENTION$,".") + 1,LEN(DIRECTORY.EXTENTION$))
19033 S$ = UPLOAD.DIRECTORY$
IF INSTR(UPLOAD.DIRECTORY$,".") THEN _
S$ = MID$(UPLOAD.DIRECTORY$,1,INSTR(UPLOAD.DIRECTORY$,".")-1)
19034 DIRECTORY.EXTENTION$ = T$
19035 UPLOAD.DIRECTORY$ = S$
19036 IF DOWNLOAD.TO.SUBDIR$ = "NO" THEN _
DNLD.SUB = 0 : _
FOR I = 1 TO 99 : _
DNLD$(I) = "" : _
NEXT
19037 IF UPLOAD.TO.SUBDIR$ = "NO" THEN _
UPLOAD.SUBDIR$ = DRIVE.FOR.UPLOADS$ + ":"
19038 IF UPLOAD.TO.SUBDIR$ = "YES" AND UPLOAD.SUBDIR$<>"" THEN _
DRIVE.FOR.UPLOADS$ = UPLOAD.SUBDIR$
19039 IF REQUIRED.RINGS = 0 AND _ ' CPC14-1D
MID$(MODEM.INIT.COMMAND$,INSTR(MODEM.INIT.COMMAND$,"S0")+3,5)<>"1V1X1" THEN _
MID$(MODEM.INIT.COMMAND$,INSTR(MODEM.INIT.COMMAND$,"S0")+3,5)="1V1X1" : _ 'CPC14-1D
MID$(MODEM.INIT.COMMAND$,6,1)="0" ' CPC14-1D
IF REQUIRED.RINGS > 0 AND _
MID$(MODEM.INIT.COMMAND$,INSTR(MODEM.INIT.COMMAND$,"S0")+3,3)="0 " THEN _
MID$(MODEM.INIT.COMMAND$,INSTR(MODEM.INIT.COMMAND$,"S0")+3,3)="254"
'
' *****************************************************************************
' * WRITE OUT THE "RBBS-PC.DEF" FILE WITH THE SYSOP'S SPECIFIED CONFIGURATION *
' *****************************************************************************
'
19040 WRITE #1,DOWNLOAD.DRIVES$, _
SYSOP.PASSWORD.1$, _
SYSOP.PASSWORD.2$, _
SYSOP.FIRST.NAME$, _
SYSOP.LAST.NAME$, _
REQUIRED.RINGS, _
START.OFFICE.HOURS, _
END.OFFICE.HOURS, _
MINUTES.PER.SESSION!, _
MAX.ALLOWED.MSGS.FRM.DEF, _
ACT.MNTHS.B4.DELETING, _
UPLOAD.DIRECTORY$,_
EXPERT.USER, _
ACTIVE.BULLETINS, _
PROMPT.BELL, _
PCJR, _
CODE.TYPE, _
MENU$(1), _
MENU$(2), _
MENU$(3), _
MENU$(4), _
MENU$(5), _
CONFERENCE.MENU$, _
CONFERENCE.VIEWER.SEC.LVL, _
WELCOME.INTERRUPTABLE, _
REMIND.FILE.TRANSFERS, _
PAGE.LENGTH, _
MAX.MESSAGE.LINES, _
DOORS.AVAILABLE, _
MO$
19050 IF INSTR(BULLETIN.MENU$,":") < 1 THEN _
BULLETIN.MENU$ = DRIVE.FOR.BULLETINS$ + BULLETIN.MENU$
19060 IF INSTR(BULLETIN.PREFIX$,":") < 1 THEN _
BULLETIN.PREFIX$ = DRIVE.FOR.BULLETINS$ + BULLETIN.PREFIX$
19070 FOR I = 1 TO 9
19080 HELP$(I) = DRIVE.FOR.HELP.FILES$ + _
":" + _
HELP.FILE.PREFIX$ + _
RIGHT$(STR$(I),1)
19090 NEXT
19100 MAIN.FUNCTION(6) = MINIMUM.LOGON.SECURITY
FILES.FUNCTION(2) = MINIMUM.LOGON.SECURITY
19110 WRITE #1,MAIN.MESSAGE.FILE$, _
MAIN.MESSAGE.BACKUP$, _
CALLERS.FILE$, _
COMMENTS.FILE$, _
MAIN.USER.FILE$, _
WELCOME.FILE$, _
NEWUSER.FILE$, _
DIRECTORY.EXTENTION$, _
COM.PORT$, _
BULLETINS.OPTIONAL, _
MODEM.INIT.COMMAND$, _
TB$, _
DOS.VERSION, _
FG, _
BG, _
BORDER, _
RBBS.BAT$, _
RCTTY.BAT$
19120 WRITE #1,OMIT.MAIN.DIRECTORY$, _
OMIT.UPLOAD.DIRECTORY$, _
HELP$(1), _
HELP$(2), _
HELP$(3), _
HELP$(4), _
HELP$(5), _
HELP$(6), _
HELP$(7), _
HELP$(8), _
HELP$(9), _
BULLETIN.MENU$, _
BULLETIN.PREFIX$, _
DRIVE.FOR.BULLETINS$, _
MESSAGE.REMINDER, _
REQUIRE.NON.ASCII, _
DOORS.SECURITY.LEVEL, _
MAXIUM.NUMBER.OF.NODES, _
NETWORK.TYPE, _
RECYCLE.TO.DOS, _
MAX.USR.FILE.SIZE.FRM.DEF, _
MAX.MSG.FILE.SIZE.FRM.DEF!, _
TRASHCAN.FILE$
19130 WRITE #1,MINIMUM.LOGON.SECURITY, _
DEFAULT.SECURITY.LEVEL, _
SYSOP.SECURITY.LEVEL, _
FILESEC.FILE$, _
SYSOP.MENU.SECURITY.LEVEL, _
LOCAL.PASSWORD$, _
MAXIMUM.VIOLATIONS, _
SYSOP.FUNCTION(1), _
SYSOP.FUNCTION(2), _
SYSOP.FUNCTION(3), _
SYSOP.FUNCTION(4), _
SYSOP.FUNCTION(5), _
SYSOP.FUNCTION(6), _
SYSOP.FUNCTION(7), _
PASSWORD.FILE$, _
MAXIMUM.PASSWORD.CHANGES, _
MINIMUM.SECURITY.FOR.TEMP.PASSWORD, _
OVERWRITE.SECURITY.LEVEL, _
DOORS.TERMINAL.TYPE, _
LIMIT.DAILY.TIME
19140 WRITE #1,MAIN.FUNCTION(1), _
MAIN.FUNCTION(2), _
MAIN.FUNCTION(3), _
MAIN.FUNCTION(4), _
MAIN.FUNCTION(5), _
MAIN.FUNCTION(6), _
MAIN.FUNCTION(7), _
MAIN.FUNCTION(8), _
MAIN.FUNCTION(9), _
MAIN.FUNCTION(10), _
MAIN.FUNCTION(11), _
MAIN.FUNCTION(12), _
MAIN.FUNCTION(13), _
MAIN.FUNCTION(14), _
MAIN.FUNCTION(15), _
MAIN.FUNCTION(16), _
MAIN.FUNCTION(17), _
MAIN.FUNCTION(18), _
MAIN.FUNCTION(19), _
MAIN.FUNCTION(20), _
MAIN.FUNCTION(21), _
DEFAULT.MACHINE.TYPE$, _
WAIT.BEFORE.DISCONNECT
19150 WRITE #1,FILES.FUNCTION(1), _
FILES.FUNCTION(2), _
FILES.FUNCTION(3), _
FILES.FUNCTION(4), _
FILES.FUNCTION(5), _
FILES.FUNCTION(6), _
FILES.FUNCTION(7), _
FILES.FUNCTION(8), _
FILES.FUNCTION(9), _
FILES.FUNCTION(10), _
UTILITY.FUNCTION(1), _
UTILITY.FUNCTION(2), _
UTILITY.FUNCTION(3), _
UTILITY.FUNCTION(4), _
UTILITY.FUNCTION(5), _
UTILITY.FUNCTION(6), _
UTILITY.FUNCTION(7), _
UTILITY.FUNCTION(8), _
UTILITY.FUNCTION(9), _
UTILITY.FUNCTION(10), _
UTILITY.FUNCTION(11), _
UTILITY.FUNCTION(12), _
UTILITY.FUNCTION(13), _
UTILITY.FUNCTION(14), _
UTILITY.FUNCTION(15), _
UTILITY.FUNCTION(16), _
UPLOAD.TIME.FACTOR!, _
COMPUTER.TYPE, _
REMIND.PROFILE, _
RBBS.NAME$, _
COMMANDS.BETWEEN.RINGS, _
MNP.SUPPORT, _
PAGING.PRINTER.SUPPORT$, _
MODEM.INIT.BAUD$
19159 IF COM.PORT$ = "COM1" THEN _
LSB = &H3F8 : _
MSB = &H3F9 : _
LINE.CONTROL.REGISTER = &H3FB : _
MODEM.CONTROL.REGISTER = &H3FC : _
LINE.STATUS.REGISTER = &H3FD : _
MODEM.STATUS.REGISTER = &H3FE
19160 IF COM.PORT$ = "COM2" OR PCJR = 1 THEN _
LSB = &H2F8 : _
MSB = &H2F9 : _
LINE.CONTROL.REGISTER = &H2FB : _
MODEM.CONTROL.REGISTER = &H2FC : _
LINE.STATUS.REGISTER = &H2FD : _
MODEM.STATUS.REGISTER = &H2FE
19161 WRITE #1,SYSOP.FUNCTION.KEY1$, _
SYSOP.FUNCTION.KEY2$, _
SYSOP.FUNCTION.KEY3$, _
SYSOP.FUNCTION.KEY4$, _
SYSOP.FUNCTION.KEY5$, _
SYSOP.FUNCTION.KEY6$, _
SYSOP.FUNCTION.KEY7$, _
SYSOP.FUNCTION.KEY8$, _
SYSOP.FUNCTION.KEY9$, _
SYSOP.FUNCTION.KEY10$, _
SYSOP.FUNCTION.KEY11$, _
SYSOP.FUNCTION.KEY12$, _
SEC.LVL.EXEMPT.FRM.PURGING, _ ' CPC14-1C
MODEM.INIT.WAIT.TIME, _ ' CPC14-1C
MODEM.COMMAND.DELAY.TIME, _ ' CPC14-1C
TURBO.RBBS ' CPC14-1C
19162 WRITE #1,DNLD.SUB, _
WILL.SUBDIRS.B.USED, _
UPLOAD.TO.SUBDIR, _
DOWNLOAD.TO.SUBDIR, _
UPLOAD.SUBDIR$, _
RESTRICT.BAUD, _
USE.COLOR, _
DISKFULL.GO.OFFLINE, _
EXTENDED.LOGGING, _
MODEM.RESET.COMMAND$, _
MODEM.COUNT.RINGS.COMMAND$, _
MODEM.ANSWER.COMMAND$, _
MODEM.GO.OFFHOOK.COMMAND$, _
DISK.FOR.DOS$, _
DUMB.MODEM, _
COMMENTS.AS.MESSAGES, _ ' CPC14-1C
LSB, _
MSB, _
LINE.CONTROL.REGISTER, _
MODEM.CONTROL.REGISTER, _
LINE.STATUS.REGISTER, _
MODEM.STATUS.REGISTER
19165 IF DNLD.SUB<1 OR DNLD.SUB>99 THEN _
GOTO 19170
FOR I = 1 TO DNLD.SUB
WRITE #1,DNLD$(I)
NEXT
19170 CLOSE #1
'
' *****************************************************************************
' * NOTIFY THE SYSOP THAT THE CONFIGURATION DESCRIPTION FILE HAS BEEN WRITTEN *
' *****************************************************************************
'
19175 CLS
LOCATE 12,1,1
PRINT "RBBS-PC configuration description file, " + CONFIG.FILENAME$ + ", now on default drive."
GOSUB 60380
19179 GOTO 60340
'
' *****************************************************************************
' * DISPLAY PARAMETERS FOR RUNNING MULITPLE COPIES OF RBBS-PC *
' *****************************************************************************
'
21550 DISPLAYED.PAGE.NUMBER = 7
21560 GOSUB 30040
21565 MAX.USR.FILE.SIZE.FRM.DEF = HIGHEST.USER.RECORD
MAX.MSG.FILE.SIZE.FRM.DEF! = HIGHEST.MESSAGE.RECORD
MAX.ALLOWED.MSGS.FRM.DEF = MAXIMUM.NUMBER.OF.MSGS
21570 GOSUB 24800
21580 LOCATE 3,9
PRINT "121. Maximum number of concurrent RBBS-PC's -------"STR$(MAXIUM.NUMBER.OF.NODES)
21590 IF MAXIUM.NUMBER.OF.NODES = 1 THEN _
MT$ = "single RBBS-PC copy " ELSE _
MT$ = "concurrent RBBS-PC's" : _
GOSUB 21900 : _
IF NETWORK.TYPE < 0 OR NETWORK.TYPE > 4 THEN _
GOTO 21810
21600 LOCATE 4,9
PRINT "122. Environment running " + MT$ + " ------ " + NETWORK.TYPE$
21610 LOCATE 5,9
PRINT "123. RBBS-PC 'recycle' method when users log off --- " + RECYCLE.TO.DOS$
21615 FILE$ = MAIN.MESSAGE.FILE$
GOSUB 30180
MAX.MSG.FILE.SIZE.FRM.DEF! = UG
21620 LOCATE 6,9
PRINT "124. Number of records in the " + MAIN.USER.FILE$ + " file ";STRING$(16-LEN(MAIN.USER.FILE$),"-");STR$(MAX.USR.FILE.SIZE.FRM.DEF)
21630 LOCATE 7,9
PRINT "125. Number of records in " + MAIN.MESSAGE.FILE$ + " file ";STRING$(20-LEN(MAIN.MESSAGE.FILE$),"-");STR$(MAX.MSG.FILE.SIZE.FRM.DEF!)
21635 LOCATE 8,9
PRINT "126. Maximum number of messages allowed ------------"STR$(MAX.ALLOWED.MSGS.FRM.DEF)
21636 LOCATE 9,9
PRINT "127. Conference File Maintenance.
21640 GOSUB 24890
21650 GOSUB 22160
21660 IF IX THEN _
ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,16910,23000,21680
21670 GOTO 21650
21680 GOSUB 50340
21690 IF HJ$ = "121" THEN _
GOTO 21750
21700 IF HJ$ = "122" THEN _
GOTO 21810
21710 IF HJ$ = "123" THEN _
GOTO 21950
21720 IF HJ$ = "125" THEN _
GOSUB 22040 : _
GOTO 21550
21730 IF HJ$ = "124" THEN _
IF F = 2 THEN _
GOSUB 22560 : _
GOTO 21550 ELSE _
GOSUB 22100 : _
GOTO 21550
21735 IF HJ$ = "126" THEN _
GOTO 13890
21736 IF HJ$ = "127" THEN _
GOTO 25040
21740 GOTO 21640
'
' *****************************************************************************
' * ALLOW THE USER TO SPECIFY THE MAXIMUM NUMBER OF RBBS-PC'S TO CONFIGURE FOR*
' *****************************************************************************
'
21750 GOSUB 50340
LOCATE 24,5
PRINT "Maximum number of conurrent RBBS-PC's? (a value between 1 and 36)";
21760 LINE INPUT;HJ$
21770 B1 = VAL(HJ$)
21780 IF B1 < 1 OR B1 > 36 THEN _
GOTO 21750
21790 IF MAXIUM.NUMBER.OF.NODES = B1 THEN _
GOTO 21550
21795 B3! = MAX.MSG.FILE.SIZE.FRM.DEF!
GOSUB 30610
21800 GOTO 21550
'
' *****************************************************************************
' * IDENTIFY THE NETWORK TYPES THAT RBBS-PC CAN RUN IN *
' *****************************************************************************
'
21810 CLS
LOCATE 3,5
PRINT "RBBS-PC is supported in the following:"
LOCATE 5,20
PRINT "Environment"
LOCATE 7,10
PRINT "0. Single RBBS-PC in an IBM DOS environment"
LOCATE 9,10
PRINT "1. MultiLink (multi-tasking under single DOS)
21840 LOCATE 11,10
PRINT "2. Omninet (CORVUS)"
LOCATE 13,10
PRINT "3. PC-NET (Orchid)"
LOCATE 15,10
PRINT "4. DESQview (Quarterdeck)" ' CPC14-1C
LOCATE 17,10 ' CPC14-1C
PRINT "5. IBM DOS (3.1 or above) file sharing not supported" ' CPC14-1C
21870 GOSUB 50340
LOCATE 24,5
PRINT "Select environment (0 to 5, CR to end)"; ' CPC14-1C
LINE INPUT;X$
IF X$ = "" THEN _
GOTO 21550
NETWORK.TYPE = VAL(X$)
GOSUB 21890
GOTO 21550
21890 IF NETWORK.TYPE < 0 OR NETWORK.TYPE > 5 GOTO 21870 ' CPC14-1C
21895 IF NETWORK.TYPE = 0 THEN _
NETWORK.TYPE$ = "IBM's DOS
21900 IF NETWORK.TYPE = 1 THEN _
NETWORK.TYPE$ = "MultiLink
21910 IF NETWORK.TYPE = 2 THEN _
NETWORK.TYPE$ = "Omninet
21920 IF NETWORK.TYPE = 3 THEN _
NETWORK.TYPE$ = "PC-NET
IF NETWORK.TYPE = 4 THEN _ ' CPC14-1C
NETWORK.TYPE$ = "DESQview" ' CPC14-1C
21930 IF NETWORK.TYPE = 5 THEN _ ' CPC14-1C
NETWORK.TYPE$ = "IBM's file sharing -- future" ' CPC14-1C
21940 RETURN
'
' *****************************************************************************
' * ALLOW THE SYSOP TO SELECT HOW RBBS-PC IS TO RECYCLE WHEN A USER LOGS OFF *
' *****************************************************************************
'
21950 GOSUB 50340
LOCATE 24,5
PRINT "How RBBS-PC recycles when users logs off (SYSTEM or INTERNAL)? ";
21960 LINE INPUT;HJ$
21970 IF LEN(HJ$) < 1 OR LEN(HJ$) > 8 THEN _
GOTO 21950
21980 GOSUB 50654
21990 IF HJ$ = "SYSTEM" THEN _
RECYCLE.TO.DOS = 1 : _
GOTO 22020
22000 IF HJ$ = "INTERNAL" THEN _
RECYCLE.TO.DOS = 0 : _
GOTO 22020
22010 GOTO 21950
22020 RECYCLE.TO.DOS$ = HJ$
22030 GOTO 21550
'
' *****************************************************************************
' * ALLOW THE SYSOP TO SPECIFY THE MAXIMUM NUMBER OF RECORDS IN MESSAGES FILE *
' *****************************************************************************
'
22040 GOSUB 50340
LOCATE 24,5
PRINT "Max. records in preformatted " + MAIN.MESSAGE.FILE$ + " file (>" + STR$(5*MAX.ALLOWED.MSGS.FRM.DEF + 1 + MAXIUM.NUMBER.OF.NODES) + "):";
22050 LINE INPUT;HJ$
22060 B3! = VAL(HJ$)
22070 IF B3! <= (5*MAX.ALLOWED.MSGS.FRM.DEF + 1 + MAXIUM.NUMBER.OF.NODES) OR _
B3! > 9999999! THEN _
GOTO 22040
22080 B1 = MAXIUM.NUMBER.OF.NODES
GOSUB 30610
MAX.MSG.FILE.SIZE.FRM.DEF! = B3!
22090 RETURN
'
' *****************************************************************************
' * BUILD THE USERS FILE TO SUIT *
' *****************************************************************************
'
22100 GOSUB 50340
LOCATE 24,5
FF = CURRENT.USER.COUNT
IF FF > 1 THEN _
FF = FF-1
22105 GOSUB 50340
LOCATE 24,5
PRINT STR$(FF) + " of" + STR$(HIGHEST.USER.RECORD) + _
" records used. Enter new maximum number of records for " + _
MAIN.USER.FILE$ + ":";
22110 LINE INPUT;HJ$
22120 B1 = VAL(HJ$)
22130 IF B1 < 1 OR B1 > 99999! OR B1 < FF THEN _
GOTO 22100
22140 B2 = 2
WHILE B2 < B1
B2 = B2 * 2
WEND
IF MAX.USR.FILE.SIZE.FRM.DEF = B2 THEN _
RETURN
22142 XX$ = "Change " + MAIN.USER.FILE$ + " file to" + STR$(B2) + " records? (YES or NO)"
GOSUB 50345
GOSUB 22380
ON AB GOTO 22100,22150,22100,22100
22150 MAX.USR.FILE.SIZE.FRM.DEF = B2
D.FLAG = -1
GOSUB 24110
IB = 1
MAX.USR.FILE.SIZE.FRM.DEF = B2
HIGHEST.USER.RECORD = B2
GOSUB 30450
GOSUB 50340
RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO HANDLE THE FUNCTION KEYS AND SCROLL BETWEEN CONFIG'S *
' * PAGES OF OPTIONS. *
' *****************************************************************************
'
22160 I! = FRE(C$)
Y$ = INKEY$
22170 IX = 0
22180 IF LEN(Y$) < 1 THEN _
GOTO 22160
22190 IF LEN(Y$) = 2 THEN _
GOTO 22240
22200 IF ASC(Y$) = 13 THEN _
IX = 13 : _
RETURN
22205 IF ASC(Y$) = 8 AND LEN(HJ$) > 0 THEN _
HJ$ = LEFT$(HJ$,LEN(HJ$)-1) : _
PRINT CHR$(29) + " " + CHR$(29); : _
GOTO 22160
22206 IF ASC(Y$) < 48 OR ASC(Y$) > 57 THEN _
GOTO 22160
22210 PRINT Y$;
22220 HJ$ = HJ$ + Y$
IF LEN(HJ$) > 4 THEN _
IX = 13
22230 RETURN
22240 IX = ASC(RIGHT$(Y$,1))
22250 Y$ = "
22260 IF IX < 59 OR IX > 81 THEN _
RETURN
22270 IX = IX-58
22280 IF IX < 10 THEN _
RETURN
22290 IF IX = 15 THEN _
IX = 11 : _
RETURN
22300 IF IX = 21 THEN _
IX = 10 : _
RETURN
22310 IF IX = 23 THEN _
IX = 12
RETURN
22320 IX = 0
22330 RETURN
'
' *****************************************************************************
' * COMMON ROUTINE TO NOTIFY THE USER WHEN READING DATA *
' *****************************************************************************
'
22340 LOCATE 22,15
PRINT SPC(64);
LOCATE 22,15
PRINT TIME$;" ";
COLOR 0,7
PRINT " Reading Data, Wait a sec !!! ";
COLOR FG,BG,BORDER
RETURN
'
' *****************************************************************************
' * BEFORE EXITING, ASK USER IF HE WANTS TO WRITE OUT THE CHANGES OR QUIT *
' *****************************************************************************
'
22350 GOSUB 50340
22360 XX$ = "Are you satisfied with all changes ? (Y/N) or <Q)uit "
GOSUB 50345
GOSUB 22380
ON AB GOTO 12190,18740,60360,22350
22380 LINE INPUT;HJ$
22390 IF LEN(HJ$) < 1 OR LEN(HJ$) > 3 THEN _
GOTO 22470
22400 GOSUB 50654
22410 IF HJ$ = "NO" THEN _
AB = 1 : _
RETURN
22420 IF HJ$ = "N" THEN _
HJ$ = "NO" : _
AB = 1 : _
RETURN
22430 IF HJ$ = "YES" THEN _
AB = 2 : _
RETURN
22440 IF HJ$ = "Y" THEN _
HJ$ = "YES" : _
AB = 2 : _
RETURN
22450 IF HJ$ = "QUIT" THEN _
AB = 3 : _
RETURN
22460 IF HJ$ = "Q" THEN _
AB = 3 : _
RETURN
22470 AB = 4
RETURN
'
' *****************************************************************************
' * ASK THE USER WHICH RBBS-PC.DEF FILE CONFIG IS TO WORK WITH *
' *****************************************************************************
'
22480 GOSUB 50340
LOCATE 24,5
PRINT "To which copy of RBBS-PC will these options apply (1 to 36)?";
22490 LINE INPUT;HJ$
22500 IF LEN(HJ$) < 1 OR LEN(HJ$) > 2 THEN _
GOTO 22480
22510 IF VAL(HJ$) < 1 OR VAL(HJ$) > 36 THEN _
GOTO 22480
22520 MID$(CONFIG.FILENAME$,5,1) = MID$("1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ",VAL(HJ$),1)
22530 RETURN
'
' *****************************************************************************
' * NOTIFY SYSOP OPTIONS THAT ARE UNAVAILABLE FOR PUBLIC CONFERENCES *
' *****************************************************************************
'
22560 GOSUB 50340
LOCATE 24,5
PRINT "Option " + HJ$ + " unavailable when maintaining a public conference!";
22570 DELAY! = FNTI! + 5
GOSUB 60440
RETURN
'
' *****************************************************************************
' * DISPLAY THE RBBS-PC UTILITIES AVAILABLE IN CONFIG *
' *****************************************************************************
'
23000 DISPLAYED.PAGE.NUMBER = 8
23010 GOSUB 24800
RB = 0
23020 LOCATE 3,9
PRINT "141. Pack " + MAIN.MESSAGE.FILE$ + " file.
23030 LOCATE 4,9
PRINT "142. Rebuild " + MAIN.USER.FILE$ + " file.
23040 LOCATE 5,9
PRINT "143. Print " + MAIN.MESSAGE.FILE$ + " 'header' records.
23050 LOCATE 6,9
PRINT "144. Renumber messages in " + MAIN.MESSAGE.FILE$ + " file.
23055 LOCATE 7,9
PRINT "145. Repair messages in " + MAIN.MESSAGE.FILE$ + " file.
23056 LOCATE 8,9
PRINT "146. Initialize Hayes 2400 firmware for RBBS-PC.
23060 A$ = "Enter number of utility function, END to terminate, PgUp/PgDn to scroll."
GOSUB 24900
23070 GOSUB 22160
23080 IF IX THEN _
ON IX GOTO 12360,14200,14570,15340,16130,16910,21550,23000,25220,22350,21550,25220,23100
23090 GOTO 23070
23100 GOSUB 50340
23110 IF HJ$ = "141" THEN _
GOTO 23160
23120 IF HJ$ = "142" THEN _
IF F = 2 THEN _
GOSUB 22560 : _
GOTO 23000 _
ELSE D.FLAG = 0 : _
GOSUB 24110 : _
GOTO 23000
23130 IF HJ$ = "143" THEN _
SK = 0 : _
GOTO 23630
23140 IF HJ$ = "144" THEN _
GOTO 23740
23145 IF HJ$ = "145" THEN _
RB = 1 : _
SK = 0 : _
GOTO 23630
23146 IF HJ$ = "146" THEN _
GOSUB 23731 : _
GOTO 23000
23150 GOTO 23060
'
' *****************************************************************************
' * PACK THE MESSAGES FILE *
' *****************************************************************************
'
23160 B1 = MAXIUM.NUMBER.OF.NODES
B3! = HIGHEST.MESSAGE.RECORD
PURGE = -1
GOSUB 30610
GOTO 23000
23610 I = LOC(1) + VAL(MID$(MESSAGE.RECORD$,117,4)) - 1 ' CPC14-1D
23620 RETURN
'
' *****************************************************************************
' * PRINT THE HEADER RECORDS IN THE MESSAGES FILE *
' *****************************************************************************
'
23630 GOSUB 30040 ' <----Print message headers
23640 OPEN "R",1,MAIN.MESSAGE.FILE$
23650 FIELD 1,128 AS MESSAGE.RECORD$
23670 FOR I = FIRST.MESSAGE.RECORD TO NEXT.MESSAGE.RECORD-1
23680 GET 1,I
23684 IF VAL(MID$(MESSAGE.RECORD$,117,4)) > 0 AND _ ' CPC14-1D
SK < VAL(MID$(MESSAGE.RECORD$,2,4)) THEN _
SK = VAL(MID$(MESSAGE.RECORD$,2,4)) : _
GOSUB 23610 ELSE _ ' CPC14-1C
GOTO 23725
23686 I$ = "K"
IF MID$(MESSAGE.RECORD$,116,1) = CHR$(225) THEN _
I$ = "A
23715 IF LOC(1) > NEXT.MESSAGE.RECORD-1 THEN _
GOTO 23730
23717 PRINT LEFT$(MESSAGE.RECORD$,5) + " " + _
MID$(MESSAGE.RECORD$,76,25) + " " + _
MID$(MESSAGE.RECORD$,101,15) + " " + _
I$ + " " + _
MID$(MESSAGE.RECORD$,117,4) + " " + _ ' CPC14-1D
STR$(LOC(1)) + " " + _
STR$(I)
SK = VAL(MID$(MESSAGE.RECORD$,2,4))
23720 IF RB AND VAL(MID$(MESSAGE.RECORD$,2,4)) = CALLS.TODATE! THEN _
GOTO 23730
23722 IF RB THEN _
GOSUB 50580
23725 NEXT
23730 GET 1,1
MID$(MESSAGE.RECORD$,1,8) = SPACE$(8)
MID$(MESSAGE.RECORD$,1,8) = STR$(SK)
PUT 1,1
CLOSE 1
DELAY! = FNTI! + 5
GOSUB 60440
GOTO 23000
'
' *****************************************************************************
' * ROUTINE TO INITIALIZE THE HAYES 2400 MODEM'S FIRMWARE *
' *****************************************************************************
'
23731 LOCATE 25,5
PRINT "Setting Hayes 2400 firmware switches for RBBS-PC on " + COM.PORT$;
DELAY! = FNTI! + 3
GOSUB 60440
'
' *****************************************************************************
' * *
' * WHEN INITIALIZING THE HAYES 2400 VOLITILE MEMORY, SET THE FOLLOWING: *
' * *
' * &C1 = Indicate carrier detect if user is on-line *
' * &D3 = Use these settings when DTR drops *
' * B1 = Use Bell 212A when 1200 Baud is detected *
' * E0 = Do not echo modem commands back to the PC *
' * V1 = Issue long form of results codes *
' * M0 = Disable the speaker *
' * *
' *****************************************************************************
'
23732 A$ = "AT&C1&D3B1E0V1M0" ' CPC14-1D
IF VAL(MID$(MODEM.INIT.COMMAND$,24,3)) = 255 THEN _ ' CPC14-1D
A$ = A$ + "Q1" ' Don't send results to the PC ' CPC14-1D
A$ = A$ + _ ' CPC14-1D
"S0 = " + MID$(STR$(VAL(MID$(MODEM.INIT.COMMAND$,24,3))),2,3)
LOCATE 25,5
PRINT SPACE$(74);
LOCATE 25,5
PRINT "Prevent remote digitial loop back tests? ";
GOSUB 22380
ON AB GOTO 23734,23733,23732,23732
23733 A$ = A$ + "&T5"
23734 OPEN COM.PORT$ + ":2400,N,8,1,RS,CD,DS" AS #3
PRINT #3,"AT&F" 'Clear and initialize to factory settings ' CPC14-1D
DELAY! = FNTI! + 3
GOSUB 60440
PRINT #3,A$ + "&W"
GOSUB 60440
23735 A$="ATS0=0"
LOCATE 25,5
PRINT SPACE$(74);
LOCATE 25,5
PRINT "Force auto-answer off? (i.e. let RBBS-PC turn auto-answer on)";
GOSUB 22380
ON AB GOTO 23739,23736,23735,23735
23736 GOSUB 60440
PRINT #3,A$+"&W"
GOSUB 60440
23739 CLOSE #3
LOCATE 25,5
PRINT SPACE$(74);
LOCATE 25,5
PRINT "Hayes 2400 firmware switches are now set for RBBS-PC on "+M13$;
IA!=FNTI!+3
GOSUB 60440
RETURN
'
' *****************************************************************************
' * ROUTINE TO RENUMBER THE MESSAGE FILE *
' *****************************************************************************
'
23740 GOSUB 30040
23750 GOSUB 50340
LOCATE 24,5
PRINT "Renumber starting with OLD message # (<" + STR$(CALLS.TODATE! + 1) + ")";
23760 LINE INPUT;HJ$
23770 IF HJ$ = "" THEN _
GOTO 23000
23780 B1 = VAL(HJ$)
23790 IF B1 < 1 OR B1 > CALLS.TODATE! THEN _
GOTO 23750
23800 RE = B1
23810 GOSUB 50340
LOCATE 24,5
PRINT "Renumber starting with NEW message # ";
23820 LINE INPUT;HJ$
23830 IF HJ$ = "" THEN _
GOTO 23000
23840 B1 = VAL(HJ$)
23850 IF B1 < 1 OR B1 > 9999 THEN _
GOTO 23810
23860 NE = B1-1
23870 OPEN "R",1,MAIN.MESSAGE.FILE$
23880 FIELD 1,128 AS MESSAGE.RECORD$
23890 GOSUB 50340
23910 FOR I = FIRST.MESSAGE.RECORD TO NEXT.MESSAGE.RECORD-1
23920 GET 1,I
23930 IF INSTR(MESSAGE.RECORD$,CHR$(225)) OR _
INSTR(MESSAGE.RECORD$,CHR$(226)) THEN _
GOSUB 24010 : _
GOSUB 23610
23940 NEXT
23942 GET 1,1
23944 MID$(MESSAGE.RECORD$,1,8) = SPACE$(8) ' Update the checkpoint record with the
23946 MID$(MESSAGE.RECORD$,1,8) = STR$(NE) ' 1- 8 = number of last message on system
23947 PUT 1,1
23950 CLOSE 1
23980 DELAY! = FNTI! + 1
23990 GOSUB 60440
24000 GOTO 23000
24010 LOCATE 24,15
24020 PRINT "Msg #" + MID$(MESSAGE.RECORD$,1,5);
24030 IF VAL(MID$(MESSAGE.RECORD$,2,4))<RE THEN _
PRINT " read"; : _
RETURN
24040 Y$ = MID$(MESSAGE.RECORD$,1,1)
24045 MID$(MESSAGE.RECORD$,1,5) = SPACE$(5)
24046 NE = NE + 1
24050 MID$(MESSAGE.RECORD$,1,5) = STR$(NE)
24060 MID$(MESSAGE.RECORD$,1,1) = Y$
24070 PRINT " renumbered as Msg #" + MID$(MESSAGE.RECORD$,1,5)
24090 PUT 1,I
24100 RETURN
'
' *****************************************************************************
' * ROUTINE TO PACK THE USERS FILE *
' *****************************************************************************
'
24110 GOSUB 30040
24119 OPEN "R",1,MAIN.USER.FILE$,128
24120 FIELD 1, 31 AS USER.NAME$, _
15 AS PASSWORD$, _
2 AS SECURITY.LEVEL$, _
14 AS USER.OPTIONS$, _
24 AS CITY.STATE$, _
19 AS MACHINE.TYPE$, _
14 AS LAST.DATE.TIME.ON$, _
3 AS LIST.NEW.DATE$, _
2 AS USER.DOWNLOADS$, _
2 AS USER.UPLOADS$, _
2 AS ELASPED.TIME$
24130 GOSUB 50350
A$ = F$
GOSUB 50095
OPEN "R",2,A$,128
24140 FIELD 2, 31 AS USER.NAME.N$, _
15 AS PASSWORD.N$, _
2 AS SECURITY.LEVEL.N$, _
14 AS USER.OPTIONS.N$, _
24 AS CITY.STATE.N$, _
19 AS MACHINE.TYPE.N$, _
14 AS LAST.DATE.TIME.ON.N$, _
3 AS LIST.NEW.DATE.N$, _
2 AS USER.DOWN.LOADS.N$, _
2 AS USER.UPLOADS.N$, _
2 AS ELAPSED.TIME.N$
24150 CURRENT.MONTH = VAL(LEFT$(DATE$,2))
24180 GOSUB 50340
A! = 0
GOSUB 50840
24190 A! = HIGHEST.USER.RECORD
CURRENT.USER.COUNT = 1
24200 FOR J = 1 TO A!
24210 GET 1
24220 IF ASC(USER.NAME$) = 0 OR _
MID$(USER.NAME$,1,7) = "NEWUSER" OR _
MID$(USER.NAME$,1,7) = " " OR _
MID$(USER.NAME$,1,12) = "deleted user" THEN _
A$ = "" : _
GOTO 24430
24225 IF D.FLAG THEN _
GOTO 24290
24230 SECURITY.LEVEL = CVI(SECURITY.LEVEL$)
24240 IF SECURITY.LEVEL => SEC.LVL.EXEMPT.FRM.PURGING THEN _
GOTO 24290 ' copy users exempt from purges
24250 IF SECURITY.LEVEL <= MINIMUM.LOGON.SECURITY THEN _
GOTO 24290 ' copy "locked-out" users
24260 MONTH.OF.LAST.LOGON = VAL(LEFT$(LAST.DATE.TIME.ON$,2))
24270 MONTHS.SINCE.LAST.LOGON = CURRENT.MONTH-MONTH.OF.LAST.LOGON
24280 IF MONTHS.SINCE.LAST.LOGON < 0 THEN _
MONTHS.SINCE.LAST.LOGON = MONTHS.SINCE.LAST.LOGON + 12
24285 IF MONTHS.SINCE.LAST.LOGON > ACT.MNTHS.B4.DELETING THEN _
A$ = "(Last on " + LAST.DATE.TIME.ON$ + ")" : _ ' CPC14-1C
GOTO 24430 'Purge inactive users
24290 PRINT STR$(LOC(1)) + ": " + USER.NAME$ + " copied .... ";
24300 GOSUB 50720
GOTO 24450
24430 PRINT STR$(LOC(1)) + ": " + USER.NAME$ + " purged... " + A$
24450 NEXT
24650 CLOSE 1,2
24660 MAX.USR.FILE.SIZE.FRM.DEF = HIGHEST.USER.RECORD
24670 GOSUB 30450
24730 XX$ = "Delete the old " + MAIN.USER.FILE$ + " file? (YES or NO)?"
GOSUB 50345
GOSUB 22380
ON AB GOTO 24750,24770,24730,24730
24750 A$ = MAIN.USER.FILE$
GOSUB 50096
NAME MAIN.USER.FILE$ AS A$
24760 GOTO 24780
24770 KILL MAIN.USER.FILE$
24780 GOSUB 50350
A$ = F$
GOSUB 50095
NAME A$ AS MAIN.USER.FILE$
24790 RETURN
'
' *****************************************************************************
' * ROUTINE TO DISPLAY THE PAGE HEADER FOR CONFIG'S DISPLAYS *
' *****************************************************************************
'
24800 CLS
24810 I! = FRE(C$)
24820 COLOR 0,7,0
24830 LOCATE 1,10
24840 PRINT "RBBS-PC CPC14.1 Default Configuration " + CONFIG.VERSION$;
IF F THEN _
GOSUB 24970
24850 COLOR FG,BG,BORDER
24860 LOCATE 1,68
24870 PRINT "Page " + STR$(DISPLAYED.PAGE.NUMBER) + " of " + STR$(MAXIMUM.DISPLAYABLE.PAGES)
24880 RETURN
24890 A$ = "Enter parameter number to change, END to update, PgUp/PgDn to scroll.
24900 LOCATE 24,1
24910 PRINT A$;
24920 PRINT STRING$((79-LEN(A$)),32);
24930 LOCATE 24,LEN(A$) + 1
24940 COLOR FG,BG,BORDER
HJ$ = "
24950 I! = FRE(C$)
24960 RETURN
'
' *****************************************************************************
' * ROUTINE TO DISPLAY CONFERENCE MAINTENANCE MODE IN CONFIG'S DISPLAYS *
' *****************************************************************************
'
24970 LOCATE 2,1
PRINT SPACE$(10)
LOCATE 2,10
A$ = "Private"
IF F = 2 THEN _
A$ = "Public"
24980 COLOR 31,0,0
PRINT "(" + A$ + " Conference Maintenance Mode for " + _
MID$(MAIN.MESSAGE.FILE$,1,INSTR(MAIN.MESSAGE.FILE$,"M.DEF")-1) + _
")"
COLOR FG,BG,BORDER
RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO DISPLAY ACTIVITY WHEN PACKING/PURGING FILES *
' *****************************************************************************
'
25020 LOCATE 24,5
PRINT A$" record" + STR$(LOC(2)) + " of " + MAIN.USER.FILE$ + " file.";
RETURN
25030 IF PURGE THEN _
RETURN
LOCATE 24,5
PRINT A$ + " record" + STR$(LOC(2)) + " of " _
+ MAIN.MESSAGE.FILE$ + " file.";
RETURN
'
' *****************************************************************************
' * ALLOW THE SYSOP TO ENTER/EXIT/CHANGE CONFERENCE MAINTENANCE MODE *
' *****************************************************************************
'
25040 GOSUB 50340
25041 IF F = 0 THEN _
GOTO 25050
25042 XX$ = "End conference maintenance? (YES or NO)"
GOSUB 50345
GOSUB 22380
ON AB GOTO 25050,25044,25142,25142
25044 MAIN.MESSAGE.FILE$ = MAINMSG$
25045 MAIN.USER.FILE$ = MAINUSR$
25046 GOTO 12151
25050 LOCATE 24,5
PRINT "Enter the name of the conference (seven characters or less) ";
25060 LINE INPUT;HJ$
25070 IF LEN(HJ$) < 1 OR LEN(HJ$) > 7 THEN _
GOTO 25040
25075 GOSUB 50654
CP$ = HJ$
25080 GOSUB 50340
25090 LOCATE 24,5
PRINT "Specify drive (A->" + M$ + ") containing this conference's files. ";
25100 LINE INPUT;HJ$
25110 IF LEN(HJ$) <> 1 THEN _
GOTO 25080
25112 GOSUB 50654
25114 IF HJ$ < "A" OR HJ$ > M$ THEN _
GOTO 25090
25120 CP$ = HJ$ + ":" + CP$
25140 MAIN.MESSAGE.FILE$ = CP$ + "M.DEF
25141 GOSUB 50340
25142 XX$ = "Is this a private conference? (YES or NO)"
GOSUB 50345
GOSUB 22380
ON AB GOTO 25144,25160,25141,25141
25144 F = 2
GOTO 12160
25160 F = 1
UG = 0
MAIN.USER.FILE$ = CP$ + "U.DEF"
GOTO 12160
'
' *****************************************************************************
' * COMMON ROUTINE TO DISPLAY SUBSYSTEM COMMANDS AND THEIR SECURITY LEVELS *
' *****************************************************************************
'
25180 CLS
I! = FRE(C$)
COLOR 0,7,0
LOCATE 1,23
PRINT "RBBS-PC CPC14.1 Default Configuration";
COLOR FG,BG,BORDER
25190 LOCATE 2,5
PRINT "The RBBS-PC " + CO$ + " Commands are as follows:
25200 LOCATE 3,8
PRINT "Command Security Level"
RETURN
25210 LOCATE 24,5
PRINT "Enter first character of command (CR to end)";
LINE INPUT;X$
IF X$ = "" THEN _
RETURN 16910
RETURN
'
' *****************************************************************************
' * DISPLAY DOS SUB-DIRECTORY SUPPORT PARAMETERS WITHIN RBBS-PC *
' *****************************************************************************
'
25220 DISPLAYED.PAGE.NUMBER = 9
25230 GOSUB 24800
25240 LOCATE 3,10
PRINT "161. Will you be using DOS sub-directories? ------ " + WILL.SUBDIRS.B.USED$
25250 LOCATE 4,10
PRINT "162. Upload to a DOS sub-directory? -------------- " + UPLOAD.TO.SUBDIR$
25260 LOCATE 5,10
PRINT "163. Are downloads from DOS sub-directories? ----- " + DOWNLOAD.TO.SUBDIR$
25262 IF WILL.SUBDIRS.B.USED$ <> "YES" THEN _
GOTO 25280
25264 LOCATE 6,10
PRINT "164. List, change, add, delete sub-directories."
25280 GOSUB 24890
25290 GOSUB 22160
25300 IF IX THEN _
ON IX GOTO 12360,14200,14570,15340,25220,16910,21550,23000,25220,22350,23000,12190,25320
25310 GOTO 25290
25320 GOSUB 50340
25330 IF HJ$ = "161" THEN _
GOTO 25380
25335 IF WILL.SUBDIRS.B.USED$ = "NO" THEN _
GOTO 25400
25340 IF HJ$ = "162" THEN _
GOTO 25420
25350 IF HJ$ = "163" THEN _
GOTO 25460
25360 IF HJ$ = "164" THEN _
GOTO 25495
25370 GOTO 25280
'
' *****************************************************************************
' * ESTABLISH IF THE SYSOP WANTS TO USE DOS SUB-DIRECTORIES *
' *****************************************************************************
'
25380 XX$ = "Will you be using DOS sub-directories? (YES or NO) "
GOSUB 50345
GOSUB 22380
ON AB GOTO 25400,25410,25380,25380
25400 WILL.SUBDIRS.B.USED$ = "NO"
UPLOAD.TO.SUBDIR$ = WILL.SUBDIRS.B.USED$
DOWNLOAD.TO.SUBDIR$ = WILL.SUBDIRS.B.USED$
GOTO 25220
25410 WILL.SUBDIRS.B.USED$ = "YES"
GOTO 25220
'
' *****************************************************************************
' * SET UP FOR UPLOADING TO A DOS SUB-DIRECTORY? *
' *****************************************************************************
'
25420 XX$ = "Are uploads to a DOS sub-directory? (YES or NO) "
GOSUB 50345
GOSUB 22380
ON AB GOTO 25440,25450,25420,25420
25440 UPLOAD.TO.SUBDIR$ = "NO"
GOTO 25220
25450 UPLOAD.TO.SUBDIR$ = "YES"
GOTO 25220
'
' *****************************************************************************
' * SHOULD RBBS-PC SET UP TO HAVE DOWNLOADS COME FROM DOS SUB-DIRECTORIES *
' *****************************************************************************
'
25460 XX$ = "Are downloads from DOS sub-directories? (YES or NO) "
GOSUB 50345
GOSUB 22380
ON AB GOTO 25480,25490,25460,25460
25480 DOWNLOAD.TO.SUBDIR$ = "NO"
GOTO 25220
25490 DOWNLOAD.TO.SUBDIR$ = "YES"
GOTO 25220
'
' *****************************************************************************
' * HANDLE SUB-DIRECTORY INPUTS (LIST, CHANGE, ADD, DELETE) AND PUT IN .DEF *
' *****************************************************************************
'
25495 IF UPLOAD.TO.SUBDIR$ = "NO" THEN _
GOTO 25497
GOSUB 31060
A$ = "upload"
PRINT "Change " + A$ +" DOS sub-directory? (YES or NO) ";
25496 GOSUB 22380
ON AB GOTO 25497,25500,25495,25495
25497 IF DOWNLOAD.TO.SUBDIR$ = "NO" THEN _
GOTO 25220
GOSUB 31060
A$ = "download"
PRINT "List, change, add, delete " + A$ + _
" DOS sub-directories? (YES or NO) ";
25498 GOSUB 22380
ON AB GOTO 25220,25505,25497,25497
25500 IF UPLOAD.SUBDIR$ = "" THEN _
GOTO 25502
25501 LOCATE 23,5
PRINT SPC(74)
LOCATE 23,5
PRINT "Current " + A$" DOS sub-directory name is " + UPLOAD.SUBDIR$;
25502 GOSUB 25850
IF LEN(HJ$) < 1 THEN _
GOTO 25505
25503 IF DRIVE.FOR.UPLOADS$ = MID$(X$,1,1) THEN _
SWAP UPLOAD.SUBDIR$,X$ : _
IF X$ = "" THEN _
GOTO 25501 _
ELSE 25505
25504 GOTO 25502
25505 IF DOWNLOAD.TO.SUBDIR$ = "NO" THEN _
GOTO 25220
LOCATE 23,5
PRINT SPC(74)
LOCATE 23,5
PRINT STR$(DNLD.SUB) + " of 99 download subdirectories designated.";
25510 GOSUB 31060
PRINT "L>ist, C>hange, A>dd, D>elete " + A$" DOS sub-directories? (CR ends) ";
25520 LINE INPUT;HJ$:
25530 GOSUB 50654
25560 IF LEN(HJ$) < 1 GOTO 25220
25565 IF LEN(HJ$) <> 1 GOTO 25505
25570 FF = INSTR("LCAD",HJ$)
25580 IF FF = 0 THEN _
GOTO 25510
25585 IF DNLD.SUB = 0 AND FF <> 3 THEN _
GOTO 25510
25590 ON FF GOSUB 25610,25670,25730,25670
25600 GOTO 25505
25610 LAST = (DNLD.SUB/16) + 1
INCR = 1
FOR IX = 1 TO LAST
GOSUB 24800
LOCATE 4,1
PRINT "DOS sub-directories from which downloads are done:";
INDEX = 4
FOR I = 1 TO 16
LOCATE INDEX + I,1
PRINT DNLD$(INCR);
INCR = INCR + 1
IF INCR > DNLD.SUB GOTO 25668
25634 NEXT
25636 XX$ = "More (YES or NO)"
GOSUB 50345
GOSUB 22380
ON AB GOTO 25668,25644,25636,25636
25644 NEXT
25668 GOTO 25505
25670 GOSUB 25850
IF LEN(HJ$) < 1 THEN _
GOTO 25505
25675 GOSUB 26030
A$ = " not found!"
IF X$ = "" THEN _
GOTO 25682
25680 FOR I = 1 TO DNLD.SUB
IF X$ = DNLD$(I) THEN _
GOTO 25698
NEXT
25682 GOSUB 31060
PRINT X$ + A$;
A$ = "download"
DELAY! = FNTI! + 5
GOSUB 60440
GOTO 25505
25698 IF FF = 4 THEN _
FOR X = I TO DNLD.SUB : _
DNLD$(X) = DNLD$(X + 1) : _
NEXT : _
A$ = " deleted!" : _
DNLD.SUB = DNLD.SUB-1 : _
GOTO 25682
25700 IF FF = 2 THEN _
A$ = "download" : _
NEXT.MESSAGE.RECORD = I : _
GOSUB 25850 : _
GOSUB 26030 : _
SWAP DNLD$(NEXT.MESSAGE.RECORD),X$ : _
A$ = " changed!" : _
GOTO 25682
25730 X$ = ""
GOSUB 25850
IF LEN(HJ$) < 1 THEN _
GOTO 25505
FOR I = 1 TO LEN(DRIVES.FOR.DOWNLOADS$)
IF MID$(DRIVES.FOR.DOWNLOADS$,I,1) = LEFT$(X$,1) THEN _
GOTO 25735
NEXT
GOSUB 60380
GOSUB 31060
PRINT X$ + " is not on a drive eligible for downloading.";
DELAY! = FNTI! + 5
GOSUB 60440
GOTO 25730
25735 IF X$ = "" THEN _
GOTO 25220
DNLD.SUB = DNLD.SUB + 1
DNLD$(DNLD.SUB) = X$
GOTO 25505
25850 GOSUB 31060
PRINT "Enter " + A$" DOS sub-directory name (CR to end). ";
25860 LINE INPUT;HJ$
GOSUB 50654
25861 IF LEN(HJ$) < 1 THEN _
RETURN
25862 IF LEN(HJ$) = 2 AND INSTR(HJ$,":") = 2 THEN _
X$ = HJ$ : _
RETURN
25863 IF INSTR(HJ$,":\") <> 2 THEN _
GOTO 25850
25870 X$ = HJ$
25871 FOR I = 4 TO LEN(X$)
25872 Y = INSTR(I,X$,"\")
25873 IF Y = 0 THEN _
L1 = LEN(X$)-I + 1 : _
GOTO 25876
25874 IF Y<>0 THEN _
L1 = Y-I + 1 : _
GOTO 25876
25875 NEXT
25876 HJ$ = MID$(X$,I,L1)
25878 IF LEN(HJ$) > 12 THEN _
GOTO 25850
25880 L1 = INSTR(HJ$,".")
IF L1 = 0 THEN _
IF LEN(HJ$) < 9 THEN _
GOTO 25920 _
ELSE GOTO 25850
25890 IF L1 > 9 THEN _
GOTO 25850
25900 IF L1 < 2 THEN _
GOTO 25850
25910 IF LEN(HJ$)-L1 > 3 THEN _
GOTO 25850
25915 I = 0
GOSUB 25920
IF I = 0 THEN _
RETURN
GOTO 25850
25920 FOR J = 1 TO LEN(HJ$)
25930 X = ASC(MID$(HJ$,J,1))
25940 IF (X > 63 AND X < 91) THEN _
GOTO 26020
25950 IF (X > 47 AND X < 58) THEN _
GOTO 26020
25960 IF (X = 33) THEN _
GOTO 26020
25970 IF (X > 34 AND X < 42) THEN _
GOTO 26020
25980 IF (X > 43 AND X < 47) THEN _
GOTO 26020
25990 IF (X > 96 AND X < 124) THEN _
GOTO 26020
26000 IF (X = 125) THEN _
GOTO 26020
26010 I = 1
RETURN
26020 NEXT
RETURN
26030 FOR I = 1 TO LEN(DRIVES.FOR.DOWNLOADS$)
IF MID$(DRIVES.FOR.DOWNLOADS$,I,1) = MID$(X$,1,1) THEN _
RETURN
26032 NEXT
X$ = ""
RETURN
'
' *****************************************************************************
' * CHECK TO SEE IF A FILE EXIST (COMMON SUBROUTINE) *
' *****************************************************************************
'
30000 OKAY = 0 ' <---- check to see if file exists
30010 NAME FILE$ AS FILE$ ' OKAY = 0 means file not found
30020 OKAY = -1 ' OKAY = 1 means file exists
30030 RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO READ THE MESSAGES FILE'S CHECKPOINT RECORD *
' *****************************************************************************
'
30040 OPEN "R",2,MAIN.MESSAGE.FILE$,128 ' <---- read MESSAGES checkpoint record
30050 FIELD 2,128 AS RR$
30060 GET 2,1
30090 CALLS.TODATE! = VAL(MID$(RR$,1,8)) ' 1- 8 = number of last message on system
30100 FIRST.USER.RECORD = VAL(MID$(RR$,52,5)) ' 52- 56 = first rec. of user file
30110 CURRENT.USER.COUNT = VAL(MID$(RR$,57,5)) ' 57- 61 = next avail. user record
30120 HIGHEST.USER.RECORD = VAL(MID$(RR$,62,5)) ' 62- 66 = last rec. of user file
30130 FIRST.MESSAGE.RECORD = VAL(MID$(RR$,68,7)) ' 68- 74 = first rec. of msgs file
30140 NEXT.MESSAGE.RECORD = VAL(MID$(RR$,75,7)) ' 75- 81 = next avail. msgs record
30150 HIGHEST.MESSAGE.RECORD = VAL(MID$(RR$,82,7)) ' 82- 88 = last rec. of msgs file
30152 MAXIMUM.NUMBER.OF.MSGS = VAL(MID$(RR$,89,7)) ' 89- 95 = maximum number of messages
30155 MAXIUM.NUMBER.OF.NODES = VAL(MID$(RR$,127,2)) '127-128 = maximum number of "nodes"
30160 CLOSE 2
30170 RETURN
'
' *****************************************************************************
' * COMMON ROUTINE TO GET THE LENGTH OF A FILE *
' *****************************************************************************
'
30180 OPEN "R",2,FILE$,128 ' <---- get length of file
30190 FIELD 2,128 AS RR$
30200 UG = LOF(2)/128
30210 CLOSE 2
30220 RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO CREATE A NEW MESSAGES FILE *
' *****************************************************************************
'
30230 OPEN "R",2,MAIN.MESSAGE.FILE$ ' <---- create new MESSAGES file
30240 FIELD 2,128 AS RR$
30245 A$ = "Creating preformatted"
30270 LSET RR$ = " 1" + SPACE$(124) + STR$(MAXIUM.NUMBER.OF.NODES)
30280 PUT 2,1 ' write out blank checkpoint record
30290 FOR J = 2 TO FIRST.MESSAGE.RECORD-1
30300 GOSUB 31050
30310 PUT 2 ' write out "door" records of new file
30320 GOSUB 25030
30330 NEXT
30370 FOR J = FIRST.MESSAGE.RECORD TO HIGHEST.MESSAGE.RECORD
30380 LSET RR$ = SPACE$(128)
30390 PUT 2 ' write out messages records of new file
30400 GOSUB 25030
30410 NEXT
30420 HIGHEST.MESSAGE.RECORD = LOC(2) ' point to last available message record
30425 CLOSE 2
30430 GOSUB 30450
30440 RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO UPDATE MESSAGES FILE'S CHECKPOINT RECORD *
' *****************************************************************************
'
30450 CLOSE 2
30455 OPEN "R",2,MAIN.MESSAGE.FILE$ ' <---- update MESSAGES checkpoint record
30460 FIELD 2,128 AS RR$
30470 GET 2,1
30490 MID$(RR$,52,46) = SPACE$(46) 'reset all counters before filling
30500 MID$(RR$,52,5) = STR$(FIRST.USER.RECORD) ' 52- 56 = first rec. of msgs file
30510 MID$(RR$,57,5) = STR$(CURRENT.USER.COUNT) ' 57- 61 = next avail. user record
30520 MID$(RR$,62,5) = STR$(HIGHEST.USER.RECORD) ' 62- 66 = last rec. of user file
30540 MID$(RR$,68,7) = STR$(FIRST.MESSAGE.RECORD) ' 68- 74 = first rec. of msgs file
30550 MID$(RR$,75,7) = STR$(NEXT.MESSAGE.RECORD) ' 75- 81 = next avail. msgs record
30560 MID$(RR$,82,7) = STR$(HIGHEST.MESSAGE.RECORD) ' 82- 88 = last rec. of msgs file
30562 MID$(RR$,89,7) = STR$(MAXIMUM.NUMBER.OF.MSGS) ' 89- 95 = maximum number of messages
30565 HJ$ = STR$(MAXIUM.NUMBER.OF.NODES)
IF MAXIUM.NUMBER.OF.NODES>9 THEN _
HJ$=MID$(STR$(MAXIUM.NUMBER.OF.NODES),2,2)
30570 MID$(RR$,127,2) = HJ$ '127-128 = maximum number of "nodes"
30580 PUT 2,1
30590 CLOSE 2
30600 RETURN
'
' *****************************************************************************
' * COMMON ROUTINE TO EXPAND/CONTRACT A MESSAGES FILE *
' *****************************************************************************
'
30610 CLOSE 1
30612 CLOSE 2
30613 OPEN "R",1,MAIN.MESSAGE.FILE$,128 ' <---- adjust size of the MESSAGES file
30614 FIELD 1,128 AS MESSAGE.RECORD$ ' Open old MESSAGES file
30615 A$ = MAIN.MESSAGE.FILE$
GOSUB 50095
30616 OPEN "R",2,A$,128 ' Open new MESSAGES file
30620 FIELD 2,128 AS RR$
30635 A$="Copying"
30640 OE = B1
IF MAXIUM.NUMBER.OF.NODES<=B1 THEN _
OE = MAXIUM.NUMBER.OF.NODES
30650 GOSUB 50340
30660 FOR J=1 TO OE + 1
30670 GET 1,J
30680 LSET RR$ = MESSAGE.RECORD$ ' write out existing checkpoint and
30690 PUT 2 ' existing "door" records
30700 GOSUB 25030
30710 NEXT
30720 IF B1 <= MAXIUM.NUMBER.OF.NODES THEN _
GOTO 30780
30730 FOR J = OE + 1 TO B1
30740 GOSUB 31050
30750 PUT 2 ' write out expansion "door" records
30760 GOSUB 25030
30770 NEXT
30780 MAXIUM.NUMBER.OF.NODES=B1 ' set value for maximum number of nodes
30820 FOR J = FIRST.MESSAGE.RECORD TO NEXT.MESSAGE.RECORD-1
30830 GET 1,J
30831 IF PURGE <> -1 THEN _
GOTO 30840
30832 IF MID$(MESSAGE.RECORD$,116,1)=CHR$(225) THEN _
PRINT "Msg #" + LEFT$(MESSAGE.RECORD$,5) + " copied..." : _
GOTO 30840
30833 IF MID$(MESSAGE.RECORD$,116,1) = CHR$(226) THEN _
PRINT "Msg #" + LEFT$(MESSAGE.RECORD$,5) + " purged..." : _
J=LOC(1) + VAL(MID$(MESSAGE.RECORD$,117,4)) : _ ' CPC14-1D
GOTO 30830
30840 LSET RR$ = MESSAGE.RECORD$
30850 PUT 2 ' write out existing message records
30860 GOSUB 25030
30870 NEXT
30875 B1=LOC(2) + 1 ' get new file's next message record
30880 CLOSE 1
30900 IF B3! < LOC(2) + 1 THEN _
GOTO 30960
30905 IF PURGE THEN _
NEXT.MESSAGE.RECORD = LOC(2) + 1 : _
PURGE = 0 : _
A$ = "Preformatting"
30910 FOR J! = NEXT.MESSAGE.RECORD TO B3!
30920 LSET RR$ = SPACE$(128)
30930 PUT 2 ' write out expansion message records
30940 GOSUB 25030
30950 NEXT
30960 FIRST.MESSAGE.RECORD = 1 + MAXIUM.NUMBER.OF.NODES + 1
NEXT.MESSAGE.RECORD = B1
HIGHEST.MESSAGE.RECORD = LOC(2)
CLOSE 2
30980 XX$ = "Delete the old " + MAIN.MESSAGE.FILE$ + " file? (YES or NO)?"
GOSUB 50345
GOSUB 22380
ON AB GOTO 31000,31020,30980,30980
31000 A$ = MAIN.MESSAGE.FILE$
GOSUB 50096
NAME MAIN.MESSAGE.FILE$ AS A$
31010 GOTO 31030
31020 KILL MAIN.MESSAGE.FILE$
31030 A$ = MAIN.MESSAGE.FILE$
GOSUB 50095
NAME A$ AS MAIN.MESSAGE.FILE$
31035 GOSUB 30450
31040 RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO CREATE A BLANK "NODE" RECORD IN THE MESSAGE FILE *
' *****************************************************************************
'
31050 LSET RR$ = SPACE$(31) + "-1 0 0 0 0 0 0 0 0 0 0I"
RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO POSITION CURSOR ON LINE 24, COLUMN 5 *
' *****************************************************************************
'
31060 GOSUB 50340
LOCATE 24,5
RETURN
'
' *****************************************************************************
' * ROUTINE TO CREATE A NEW USERS FILE *
' *****************************************************************************
'
50000 OPEN "R",2,MAIN.USER.FILE$ ' <---- create a new USERS file
50010 FIELD 2,128 AS U$
50015 GOSUB 50340
50016 A$ = "Creating preformatted"
50020 FOR J = FIRST.USER.RECORD TO HIGHEST.USER.RECORD
50030 LSET U$ = SPACE$(128)
50040 PUT 2
50050 GOSUB 25020
50060 NEXT
50080 CLOSE 2
50090 RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO MAKE SURE A WORK FILE HAS ".BAK" AS AN EXTENSION *
' *****************************************************************************
'
50095 IF INSTR(A$,".") THEN _
A$ = MID$(A$,1,INSTR(A$,".")-1) + ".BAK" : _
RETURN _
ELSE A$ = A$ + ".BAK" : _
RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO MAKE SURE SAVED FILES HAVES ".OLD" AS AN EXTENSION *
' *****************************************************************************
'
50096 IF INSTR(A$,".") THEN _
A$ = MID$(A$,1,INSTR(A$,".")-1) + ".OLD" : _
RETURN _
ELSE A$ = A$ + ".OLD" : _
RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO CREATE A NEW MESSAGES FILE *
' *****************************************************************************
'
50100 OPEN "R",2,MAIN.MESSAGE.FILE$
50110 FIELD 2,128 AS RR$
50114 IF F = 1 THEN _
CALLS.TODATE! = 1
50115 GOSUB 50340
50120 LSET RR$ = " 1 " + SPACE$(118) + STR$(MAXIUM.NUMBER.OF.NODES)
50130 PUT 2,1 ' write out first record of new file
50140 FOR J! = 2 TO MAXIUM.NUMBER.OF.NODES + 1
50150 GOSUB 31050
50160 PUT 2 ' write out "door" records of new file
50170 GOSUB 25030
50180 NEXT
50190 FIRST.MESSAGE.RECORD = LOC(2) + 1 ' point to first message record
50200 NEXT.MESSAGE.RECORD = FIRST.MESSAGE.RECORD ' point to next available message record
50210 IF MAXIUM.NUMBER.OF.NODES + 1 = MAX.MSG.FILE.SIZE.FRM.DEF! THEN _
GOTO 50270
50220 FOR J! = MAXIUM.NUMBER.OF.NODES + 2 TO MAX.MSG.FILE.SIZE.FRM.DEF!
50230 LSET RR$ = SPACE$(128)
50240 PUT 2 ' write out messages records of new file
50250 GOSUB 25030
50260 NEXT
50270 HIGHEST.MESSAGE.RECORD = LOC(2) ' point to last available message record
50280 GOSUB 30040
50290 RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO KEEP STRING SPACE CLEAN AND CLEAR LINE 24 *
' *****************************************************************************
'
50340 I! = FRE(C$)
LOCATE 24,1
PRINT STRING$(79,32);
RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO DISPLAY A MESSAGE ON LINE 24 *
' *****************************************************************************
'
50345 GOSUB 50340
LOCATE 24,5
PRINT XX$;
RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO RETURN FROM CONFERENCE MODE TO MAIN MESSAGE FILE *
' *****************************************************************************
'
50350 F$ = MAIN.USER.FILE$
50360 IF INSTR(MAIN.USER.FILE$,".") THEN _
F$ = MID$(MAIN.USER.FILE$,1,INSTR(MAIN.USER.FILE$,".")-1)
50370 RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO GET LENGTH OF THE USERS FILE *
' *****************************************************************************
'
50480 MAX.USR.FILE.SIZE.FRM.DEF = 8
50490 NAME MAIN.USER.FILE$ AS MAIN.USER.FILE$
50500 OPEN "R",1,MAIN.USER.FILE$
50510 IF MAX.USR.FILE.SIZE.FRM.DEF < LOF(1)/128 THEN _
MAX.USR.FILE.SIZE.FRM.DEF = LOF(1)/128
50520 UG = LOF(1)/128
CLOSE 1
RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO GET LENGTH OF THE MESSAGES FILE *
' *****************************************************************************
'
50530 MAX.MSG.FILE.SIZE.FRM.DEF! = (5*MAX.ALLOWED.MSGS.FRM.DEF) + 1 + MAXIUM.NUMBER.OF.NODES
50540 NAME MAIN.MESSAGE.FILE$ AS MAIN.MESSAGE.FILE$
50550 OPEN "R",1,MAIN.MESSAGE.FILE$
50560 IF MAX.MSG.FILE.SIZE.FRM.DEF!<LOF(1)/128 THEN _
MAX.MSG.FILE.SIZE.FRM.DEF! = LOF(1)/128
50570 CLOSE 1
RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO REPAIR THE MESSAGE FILE AND GUARANTEE IT'S CHAINS *
' *****************************************************************************
'
50580 OLD = LOC(1)
GET 1,I + 1
50590 IF (MID$(MESSAGE.RECORD$,116,1) = CHR$(225) _
OR MID$(MESSAGE.RECORD$,116,1) = CHR$(226)) _
AND (MID$(MESSAGE.RECORD$,61,1) = ":" _
AND MID$(MESSAGE.RECORD$,64,1) = ":" _
AND MID$(MESSAGE.RECORD$,70,1) = "-" _
AND MID$(MESSAGE.RECORD$,73,1) = "-") THEN _
RETURN
50600 PRINT "Message chain broken at record number " + STR$(OLD)
50610 PRINT "Message chain repair in progress!
50620 FOR IQ = OLD + 1 TO NEXT.MESSAGE.RECORD-1
50630 GET 1,IQ
50640 IF (MID$(MESSAGE.RECORD$,116,1) = CHR$(225) _
OR MID$(MESSAGE.RECORD$,116,1) = CHR$(226)) _
AND (MID$(MESSAGE.RECORD$,61,1) = ":" _
AND MID$(MESSAGE.RECORD$,64,1) = ":" _
AND MID$(MESSAGE.RECORD$,70,1) = "-" _
AND MID$(MESSAGE.RECORD$,73,1) = "-") THEN _
GOTO 50660
50645 NEXT
50650 GOTO 23730
'
' *****************************************************************************
' * COMMON ROUTINE TO CONVERT FROM LOWER TO UPPER CASE *
' *****************************************************************************
'
50654 ' Convert Lower Case to Upper Case -------
50655 FOR Z = 1 TO LEN(HJ$)
MID$(HJ$,Z,1) = CHR$(ASC(MID$(HJ$,Z,1)) + 32*(ASC(MID$(HJ$,Z,1))>96))
NEXT
RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO SKIP TO THE NEXT GOOD MESSAGE HEADER IF CHAIN BORKEN *
' *****************************************************************************
'
50660 GET 1,OLD
50670 MID$(MESSAGE.RECORD$,117,4) = STR$(IQ-OLD) ' CPC14-1D
50680 PUT 1,OLD
50690 PRINT "Message chain repaired.
50700 I = IQ
50710 RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO HASH A USER'S NAME TO FIND THE CORRECT USER RECORD # *
' *****************************************************************************
'
50720 JX = 30
WHILE MID$(USER.NAME$,JX,1) = " "
JX = JX-1
WEND
X$ = MID$(USER.NAME$,1,JX)
50721 UIX# = FNHSH(X$)
Q = FNHSH2(X$)
NSR = 1
RO = CSRLIN
CO = POS(0)
50722 GET 2,UIX#
50724 IF MID$(USER.NAME.N$,1,7) = " " THEN _
GOTO 50730
50726 UIX# = UIX# + Q
IF UIX# > MAX.USR.FILE.SIZE.FRM.DEF THEN _
UIX# = UIX# - MAX.USR.FILE.SIZE.FRM.DEF
50728 NSR = NSR + 1
LOCATE RO,CO
PRINT "searching";UIX#;
GOTO 50722
50730 LSET USER.NAME.N$ = USER.NAME$
LSET PASSWORD.N$ = PASSWORD$
LSET SECURITY.LEVEL.N$ = SECURITY.LEVEL$
LSET USER.OPTIONS.N$ = USER.OPTIONS$
LSET CITY.STATE.N$ = CITY.STATE$
LSET MACHINE.TYPE.N$ = MACHINE.TYPE$
LSET LAST.DATE.TIME.ON.N$ = LAST.DATE.TIME.ON$
LSET LIST.NEW.DATE.N$ = LIST.NEW.DATE$
LSET USER.DOWN.LOADS.N$ = USER.DOWNLOADS$
LSET USER.UPLOADS.N$ = USER.UPLOADS$
LSET ELAPSED.TIME.N$ = ELASPED.TIME$
50820 PUT 2,UIX#
CURRENT.USER.COUNT = CURRENT.USER.COUNT + 1
LOCATE RO,CO
PRINT "to pos#";UIX#;" /";NSR;" srch(s)"
50830 RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO WRITE OUT BLANK USER RECORDS TO THE USERS FILE *
' *****************************************************************************
'
50840 FOR J = A! + 1 TO MAX.USR.FILE.SIZE.FRM.DEF
50850 LSET USER.NAME.N$ = SPACE$(31)
LSET PASSWORD.N$ = SPACE$(15)
LSET SECURITY.LEVEL.N$ = MKI$(-32000)
LSET USER.OPTIONS.N$ = SPACE$(14)
LSET CITY.STATE.N$ = SPACE$(24)
LSET MACHINE.TYPE.N$ = SPACE$(19)
50910 LSET LAST.DATE.TIME.ON.N$ = SPACE$(14)
LSET LIST.NEW.DATE.N$ = SPACE$(3)
LSET USER.DOWN.LOADS.N$ = SPACE$(2)
LSET USER.UPLOADS.N$ = SPACE$(2)
LSET ELAPSED.TIME.N$ = SPACE$(2)
50970 PUT 2
GOSUB 25020
50980 NEXT
RETURN
'
' *****************************************************************************
' * CONFIG.BAS'S ERROR ROUTINES *
' *****************************************************************************
'
60000 REM
60010 REM * HANDLE ERROR CONDITIONS *
60020 ' PRINT ERR,ERL :STOP
60030 IF ERR = 53 AND ERL = 30010 THEN _
RESUME 30030
60031 IF ERR = 58 AND ERL = 30010 THEN _
RESUME 30020
60040 IF ERR = 62 AND _
(ERL = 11600 OR _
ERL = 11620 OR _
ERL = 11640 OR _
ERL = 11705 OR _
ERL = 11706) THEN _
PRINT CONFIG.FILENAME$ + _
" from a version earlier than CPC14.1 on default drive." : _
PRINT "Please delete and rerun CONFIG." : _
RESUME 60340
60140 IF ERL = 31000 AND ERR = 58 THEN _
KILL A$ : _
RESUME 31000
60150 IF ERL = 31030 AND ERR = 58 THEN _
KILL A$ : _
RESUME 31030
60170 IF ERL = 22120 AND ERR = 6 THEN _
RESUME 22100
60270 IF ERL = 24750 AND ERR = 58 THEN _
KILL A$ : _
RESUME 24750
60278 IF ERL = 50490 AND ERR = 58 THEN _
RESUME 50500
60280 IF ERL = 50540 AND ERR = 58 THEN _
RESUME 50550
60282 IF ERL = 50490 OR ERL = 50540 THEN _
RESUME 15230
60285 IF ERR = 61 THEN _
PRINT "ERROR - IBM DOS DISKETTE FULL " : _
RESUME 60340
60290 IF ERR = 67 THEN _
PRINT "ERROR - IBM DOS DIRECTORY FULL" : _
RESUME 60340
60300 IF ERR = 70 THEN _
PRINT "DISKETTE IN DRIVE IS WRITE PROTECTED" : _
RESUME 60340
60310 IF ERR = 71 THEN _
PRINT "DRIVE DOOR OPEN OR MISSING DISKETTE" : _
RESUME 60340
60320 IF ERR = 72 THEN _
PRINT "ERROR - UNFORMATTED IBM DOS DISKETTE IN DRIVE" : _
RESUME 60340
60330 PRINT "+++ Error";ERR;" in line ";ERL "occurred at " TIME$ " on " DATE$
60340 IF F = 1 THEN _
GOSUB 10540 : _
DELAY! = FNTI! + 5
60350 GOSUB 60440
60360 SYSTEM
60370 PRINT "Unable to create preformatted " + MAIN.USER.FILE$ + " file."
GOTO 60340
'
' *****************************************************************************
' * COMMON SUBROUTINE TO BEEP AT THE SYSOP *
' *****************************************************************************
'
60380 FOR I = 1 TO 3
SOUND 1000*I,1
NEXT
RETURN
'
' *****************************************************************************
' * COMMON ROUTINE TO WAIT A SPECIFIED NUMBER OF SECONDS *
' *****************************************************************************
'
60440 ' wait routine
60450 IF FNTI! < DELAY! THEN _
GOTO 60450
60460 RETURN